나는 catalog_product_collection_load_after
에 관찰자를 설정 한 다음 코드가 호출됩니다 : 당신이 볼 수 있듯이젠토 AddAttributeToSelect() 사용자 정의 추가 속성 (관찰자)에
<?php
class Drench_Admindetails_Model_Observer {
public function loadAfter($observer){
$collection = $observer->getEvent()->getCollection();
$collection->addAttributeToFilter('admin_id', Mage::getSingleton('admin/session')->getUser()->getUserId());
foreach($collection as $item) {
fb($item->getAdminId()); //fb() is a firebug call
}
return $this;
}
}
, 나는, admin_id
에 컬렉션을 필터링하고있는 다음 설치 스크립트 (namespace/module/Resource/Eav/Mysql4/Setup.php)를 통해 만들었습니다.
<?php
class Drench_Admindetails_Resource_Eav_Mysql4_Setup extends Mage_Eav_Model_Entity_Setup
{
public function getDefaultEntities()
{
return array(
'catalog_product' => array (
'entity_model' => 'catalog/product',
'attribute_model' => 'catalog/resource_eav_attribute',
'table' => 'catalog/product',
'additional_attribute_table' => 'catalog/eav_attribute',
'entity_attribute_collection' => 'catalog/product_attribute_collection',
'attributes' => array (
'admin_id' => array (
'group' => '',
'label' => '',
'type' => 'int',
'input' => '',
'default' => '0',
'class' => '',
'backend' => '',
'frontend' => '',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
'visible' => false,
'required' => false,
'user_defined' => false,
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'visible_in_advanced_search' => false,
'unique' => false
)
)
)
);
}
}
이 속성은 제품을 추가 한 관리자를 저장합니다. 그러나 컬렉션은 admin_id
에서 필터링되지 않고 관찰자 메서드의 foreach()
루프에서 admin_id
이 반환되는 대신 NULL
이 반환됩니다.
왜 작동하지 않는지에 대한 아이디어가 있습니까?
admin_id는 배열입니까? ... 당신의 설정대로? – Nasaralla
아니요, admin_id는 'int'입니다. magento EAV 속성으로 catalog_product에 추가했습니다. –
필자가 아는 바는 int 형으로 추가 되었기 때문에 (배열에 int 형의 이유는 무엇인가?) 나는 magento 개발에 익숙하지 않기 때문에 틀렸다면 수정해라. 튜토리얼 : http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/programmatically_adding_attributes_and_attribute_sets –