2013-10-17 3 views
1

Magento 프로젝트의 기능을 구현하여 각 제품의 상태를 사용 가능으로 변경하기 전에 유효성을 검사하려고합니다. 부울 값이 포함 된 사용자 정의 속성 (내부 상태)이 있는데이 값이 "false"이면 관리 사용자가 제품을 활성화하지 못하도록하고 싶습니다.magento 제품 상태 변경 캐스팅 및 제품 데이터 유효성 확인

오류 메시지를 표시하고 상태 변경을 허용하지 않으려면이 이벤트를 어떻게 잡을 수 있습니까?

답변

0

결국 해결책을 찾았으므로 다른 사람이 필요로 할 경우를 대비하여 게시하고 있습니다.

첫 단계는 그때 방법에 Observer.php 파일을 생성 /code/local/Custom/Catalog/etc/config.xml

<events> 

     <catalog_product_save_before> 
      <observers> 
       <custom_catalog_observer> 
        <class>Custom_Catalog_Model_Observer</class> 
        <method>validateStatusChange</method> 
       </custom_catalog_observer> 
      </observers> 
     </catalog_product_save_before> 
    </events> 

에서 이벤트 catalog_product_save_before을 관찰자를 추가했다 validateStatusChange는 :

<?php 

class Custom_Catalog_Model_Observer { 

public function validateStatusChange(Varien_Event_Observer $observer) { 
    $product = $observer->getEvent()->getProduct(); 
    Mage::log('Status change id ' . $product->getId() . " NEW " . $product->getData('status') . " OLD " . $product->getOrigData('status') . " SAP " . $product->getData('sap_disabled')); 
    if ($product->getData('status') == 1 && $product->getData('sap_disabled') == 1) { 
     Mage::getSingleton('core/session')->addError('Product status can not be changed to Enabled while SAP Disabled is active!'); 
     $product->setData('status', 2); 
     $product->save(); 
    } 
    return true; 
} 


} 

?> 

맞춤 모듈 파일 Custom_Catalog.xml

,369를 생성하여은/etc/모듈에 등록해야
<?xml version="1.0"?> 
<config> 
    <modules> 
    <Custom_Catalog> 
     <active>true</active> 
     <codePool>local</codePool> 
     <depends> 
     <Mage_Catalog /> 
     </depends> 
    </Custom_Catalog> 
    </modules> 
</config>