ACLロールリソースデフォルト
次のように新しいリソースをACLに追加するとします。 <acl> <resources> <admin> <children> <catalog> <children> <search> <children> <import translate="title"> <title>Import</title> </import> <export translate="title"> <title>Export</title> </export> </children> </search> </children> </catalog> </children> </admin> </resources> </acl> 次に、SearchTermグリッドに表示されるボタンの周りに以下を追加します。 if (Mage::getSingleton('admin/session')->isAllowed('catalog/search/import')) { $this->_addButton('import', array( 'label' => 'Import Search Terms', 'onclick' => "setLocation('".$this->getUrl('*/*/import')."')" )); } その後、管理者以外のユーザーとしてログインした場合、ユーザーの役割にリソースを明示的に指定していないため、期待される動作はボタンが表示されないことになると思いました。結局のところ、のデフォルトの戻り値はisAllowedtrueのように見えます。問題を複雑にするために、そのロールのリソースに移動して表示すると、チェックボックスはチェックされていません。 各ロールをクリックして[保存]をクリックすることで「問題」を解決できますが、これは特にライブ/ステージ/開発環境全体で行うPITAです。コードを介して各リソースからこのリソースを自動的に拒否する簡単な方法はありますか?必要に応じて、移行スクリプトを追加してもかまいません。同じアクションで何が起こるかをざっと見ました。おそらく、すべてのロールをロードし、それらをループMage_Admin_Model_Resource_Rules::saveRelし、テーブルに行を挿入するための同様のロジックを実行することで、これを行うことができたでしょう。しかし、このコードはすべてのリソースがポストされていることを前提としているようです。つまり、直接呼び出すには、データを渡すために必要な形式を調べ、場合によっては既存のリソースもロードする必要があります。