[システム]-> [構成]-> [カタログ]で[構成の保存]をクリックした後、カスタムモジュールでコントローラーのアクションを呼び出すにはどうすればよいですか?(画像)
モジュールの設定はそのセクション内にあり、構成が保存された直後にアクションを起動する必要があります。管理パネルのそのセクションでのみアクションを呼び出す必要があります-管理の別のセクションで[構成を保存]をクリックした場合、アクションを呼び出す必要はありません。
編集:
アクションは、モジュールの保存された設定が正しいかどうかを確認し、構成が保存されるたびに他の計算を行う必要があります。
編集2:
Fabian Blechschmidtが投稿した解決策を試しました。「構成の保存」をクリックした後、オブザーバーは機能しています(ログファイルにテキストが表示されます)。
config.xml:
<config>
...
<global>
<events>
<admin_system_config_changed_section_mysection>
<observers>
<mymodule>
<type>singleton</type>
<class>mymodule/observer</class>
<method>handle_adminSystemConfigChangedSection</method>
</mymodule>
</observers>
</admin_system_config_changed_section_mysection>
</events>
</global>
...
</config>
Model / Observer.php:
class My_Module_Model_Observer
{
public function handle_adminSystemConfigChangedSection()
{
Mage::log('Test: oberver is working!');
//I tried this but it doesn't actually trigger the action:
$url = Mage::getUrl('myrouter/adminhtml_test/validate');
Mage::app()->getResponse()->setRedirect($url);
}
}
しかし、今は行き詰まっています。
そのオブザーバー内でアクションメソッドをトリガーする方法がわかりません。コントローラは次のようになり、正常に動作します。
config.xml:
<admin>
<routers>
<mymodule>
<use>admin</use>
<args>
<module>My_Module</module>
<frontName>myrouter</frontName>
</args>
</mymodule>
</routers>
</admin>
controllers / Adminhtml / TestController.php:
class My_Module_Adminhtml_TestController extends Mage_Adminhtml_Controller_Action
{
public function validateAction()
{
//validate config settings here
}
}
編集3:
イベントオブザーバーソリューションは正常に機能するため、アクションへのリダイレクトに関する別の質問を作成 しました。モジュール/コントローラー/アクションにリダイレクトします
<events>
セクションは<global>
config.xml内またはどこかにある必要がありますか?2)オブザーバー内で自分の行動を呼び出す方法がわかりません。正しい方向に向けてもらえますか?@ファビアン