1

ブロックMage_Adminhtml_Block_Catalog_Product_Editをオーバーライドしようとしましたが、次の方法でボタン「delete_cache_product」を作成しました。

protected function _prepareLayout()
{
    parent::_prepareLayout();
        $this->_product = $this->getProduct();
        $this->setChild('delete_cache_product',
            $this->getLayout()->createBlock('adminhtml/widget_button')
                ->setData(array(
                'label'     => Mage::helper('catalog')->__('delete cache'),
                'onclick'   => 'confirmSetLocation(\''.Mage::helper('catalog')->__('Are you sure?').'\', \''.$this->getDeleteCacheProductUrl().'\')',
                'title' => Mage::helper('catalog')->__('Delete product cache?')
            ))
        );
    return $this;
}

問題は、そのボタンにリソースACLを関連付けて、そのようなリソースにアクセスできるユーザーだけがボタンを表示できるようにする方法です。

4

2 に答える 2

2

ACL を使用してカスタム管理モジュールを作成し、次に

 if(Mage::getSingleton('admin/session')->isAllowed('admin/custommodulename')){
    $this->setChild('delete_cache_product',
        $this->getLayout()->createBlock('adminhtml/widget_button')
            ->setData(array(
            'label'     => Mage::helper('catalog')->__('delete cache'),
            'onclick'   => 'confirmSetLocation(\''.Mage::helper('catalog')->__('Are you sure?').'\', \''.$this->getDeleteCacheProductUrl().'\')',
            'title' => Mage::helper('catalog')->__('Delete product cache?')
        ))
    );
 }

http://alanstorm.com/magento_acl_authenticationを参照してください

于 2013-02-19T17:38:54.587 に答える
1

私は最終的に解決策を見つけました.:私はパーミッションを作成し、adminhtml.xml直接呼び出します:

# File: adminhtml.xml
<config>
    <acl>
        <admin>
            <children>
                <catalog>
                    <children>
                        <products>
                            <children>
                                <deletecacheproduct>
                                    <title>Delete product cache</title>
                                    <sort_order>0</sort_order>
                                </deletecacheproduct>
                            </children>
                        </products>
                    </children>
                </catalog>
            </children>
            </admin>
        </resources>
    </acl>
</config>

# File: Edit.php (block)

if (Mage::getSingleton('admin/session')->isAllowed('catalog/products/deletecacheproduct')) {
    ...
}
于 2013-02-20T16:53:22.380 に答える