2

새 엔터티를 만들 때 자동으로 기본값으로 설정된 사용자 지정 EAV 특성을 추가하는 방법이 있습니까?Magento : 엔터티 생성시 기본값으로 자동 채우기되는 사용자 지정 EAV 특성 추가

나는 10 (기본값)에 eav_attribute.default_valueeav_attribute.is_required을 설정하지만 새로운 객체를 생성 할 때 자동으로 속성을 설정 아니에요.

그런데 EAV 엔티티 유형은 shipment입니다. 영업 데이터가 플랫 테이블에 저장되기 전에 1.3.2.4 설치 작업을하고 있습니다.

편집

조나단의 날 "어떻게 당신이 속성을 추가?"물었다 ModuleDir \의 SQL에서

\ module_setup \ mysql4 --0.1.0.php를 설치, 나는 다음과 같은 코드가 있습니다

$eav = new Mage_Eav_Model_Entity_Setup('sales_setup'); 
$eav->addAttribute('shipment', 'fieldname', array('type' => 'int')); 

을 나는 또한 판매 후 젠토 이후 버전 (대한이 코드를 가지고 엔티티는 EAV)에서 평면 테이블에 갔다 :

$w = $this->_conn; 
$table = $this->getTable('sales_flat_shipment'); 
$w->addColumn($table, 'fieldname', 'int'); 
$w->addKey($table, 'fieldname', 'fieldname', 'index'); 

조나단 날 물어? "는 속성이 올바른 필드 eav_attribute에 추가되었는지 확인해 봤어"

예, eav_attribute에 추가되었습니다. 속성은 설정 가능하고 gettable입니다.

+0

이 어떻게 속성을 추가? SQL 셋업 파일이나'Mage_Eav_Model_Entity_Setup'?을 확장하시오. 속성이 올바른 필드가있는'eav_attribute'에 추가되었는지 확인 했습니까? –

+0

문제의 편집을 참조하십시오. – mattalxndr

답변

3

당신이 (/lib/Varien/Object.php에서) Varien_Object::getData()를 보면 당신은 다음 줄을 볼 수 있습니다

$default = null; 

을 ... 그리고 누락 된 데이터의 인스턴스가 $default를 반환합니다. 따라서 속성에 설정 한 기본값은 무시됩니다.

정의되지 않은 'get'은 getData()에 의해 처리되므로 null이 항상 기본값임을 의미합니다. 유일한 옵션은 Sales_Model_Order_Shipment (또는 그것이 어떤 엔티티 모델인지)을 덮어 쓰고 사용자 정의 게터를 제공하는 것입니다.

간단한 예는 다음과 같습니다

function getSample() 
{ 
    if (!$this->hasSample()) 
     return 0; 

    return $this->getData('sample'); 
} 
관련 문제