주소 및 고객에 대한 고객의 모델 엔티티를 무시하려고합니다. 그것은 내 개발 환경에서 작동하지만 프로덕션 환경에서 실행되도록 할 수는 없습니다. 둘 다 Magento 1.6.0.0을 사용하고 있습니다.재정의 된 모델 엔티티가 실행되지 않음
내가 잘못 점점 될 수 두 가지 영역이 있습니다
- 그것은 내가 필요한 모든 파일을 업로드하지 않았습니다하지만 난보고 싶었어 모르는 가능성이 있습니다. FTP'ing 전체 모듈 디렉토리 그래서 그들은 추가 파일이 있다면 그들은 코드의 다른 부분에서 있어야합니다 시도했다.
- 데이터베이스의 누락 된 데이터/잘못된 데이터입니다. 이것은 더 많은 가능성이 있지만 어디서 볼 것인지 확신 할 수 없습니다 (Magento 설치 파일을 사용하는 것과 반대되는 PhpMyAdmin을 통해 데이터를 직접 설정합니다 - 사용자 지정 Magento 프로젝트이므로 다른 곳에서는 복제/복제 할 필요가 없습니다) 미래.)
어쨌든, 내가 코드 수준에서 뭔가 잘못하고있는 경우를 대비해서, 여기에 내가 가진 것이있다.
오버라이드 (override)
class Zac_Attack_Model_Entity_Address extends Mage_Customer_Model_Entity_Address
{
protected function _afterSave(Varien_Object $address)
{
// this method never gets called.
}
}
class Zac_Attack_Model_Entity_Customer extends Mage_Customer_Model_Entity_Customer
{
protected function _saveAddresses(Varien_Object $address)
{
// this method never gets called.
}
}
config.xml에
<models>
<customer_entity>
<rewrite>
<address>Zac_Attack_Model_Entity_Address</address>
<customer>Zac_Attack_Model_Entity_Customer</customer>
</rewrite>
</customer_entity>
</models>
우리는 고객의 주소로 기본 주소의 세 번째 유형을 추가 할 수 있도록 재정의입니다. 새 주소에 대한 특성이 데이터베이스에 올바르게 설정되어 있습니다. 주소를 수동으로 'default_custom'주소로 설정하면 프런트 엔드와 백엔드 모두에서 고객 세부 정보에 표시되지만 모델 엔티티는 시스템에서 ' 주소를 입력하십시오. 내가 잃어버린 것이 무엇인지 알지 못한다면, 나는 항상 로직을 다양한 "저장"기능으로 옮길 수 있지만 Magento 핵심 코드가 이미 채택한 접근 방식을 유지하는 것을 선호합니다.
내가 여기서 잘못하고있는 아이디어가 있습니까?
안녕 앨런, 좋은 질문입니다.처음 몇 가지 대답을하기 위해, 이것은 다른 곳에서 일하는 기존 모듈에 추가 된 것입니다. 그렇습니다. 모듈이 출력 사용 안 함 목록에 표시됩니다. 엔티티 모델을 인스턴스화하려면 어떻게해야합니까 (getModel은 엔티티 모델과 반대로 표준 모델 클래스를 반환합니다). 나는 그 질문에 대한 해답을 스스로 찾아 볼 것이나 이미 해답을 알고 있다면 더 빠를 수도있다. Magento 사이트에 대한 자습서는 시작했을 때 멋진 소식이었습니다. 감사합니다. ;-) –
getModel ('customer/entity_address')을 호출하면 Mage_Customer_Model_Entity_Address가 반환되므로 다른 모듈에서는 재정의하지 않는 것으로 보입니다. 또한 커뮤니티 및 로컬 영역의 모든 모듈을 검사했지만 그 중 어느 것도 클래스를 오버라이드하지 않았습니다. 내 메소드 재정의가 호출되지 않는다는 것이 확실합니다. 재정의 메소드와 기본 메소드에 일부 die ('...') 문을 넣었습니다. 기본 메서드가 호출되었지만 재정의 된 메서드는 호출되지 않았습니다. –