Событие, которое вы пытаетесь прослушать, не существует.Вот что вы хотите сделать, и несколько советов для выбора правильного события в будущем.
Во-первых, каждое событие запускается в Magento методом Mage::dispatchEvent
.Ищите основной код для этих вызовов, и вы всегда будете знать название события, которое вы хотите прослушать.
$ ack 'admin_system_config_changed_'
Adminhtml/controllers/System/ConfigController.php
136: Mage::dispatchEvent("admin_system_config_changed_section_{$section}",
Из приведенного выше вы можете увидеть название события в сравнении с тем, что вы думалиэто было
admin_system_config_changed_section_{$section}
admin_system_config_changed_mysection
Так что, похоже, вы пропустили <em>section</em>
перед своим собственным именем раздела.
Во-вторых, при работе над блоком разработки, лучший способ найти искомое событие - это записать что-то в источнике.Временно добавьте код отладки в функцию dispatchEvent
.
#File: app/Mage.php
public static function dispatchEvent($name, array $data = array())
{
//either one of the lines below should do it. One uses Magento's
//built in logging, the other uses something more crude
#Mage::Log($name);
#file_put_contents('/tmp/test.log',"$name\n",FILE_APPEND);
Varien_Profiler::start('DISPATCH EVENT:'.$name);
$result = self::app()->dispatchEvent($name, $data);
#$result = self::registry('events')->dispatch($name, $data);
Varien_Profiler::stop('DISPATCH EVENT:'.$name);
return $result;
}
Это выведет огромный список имен событий в ваш журнал.Я обычно использую OS X Console.app
для просмотра файла журнала во время запроса, копирования строк, сортировки и удаления дубликатов, а затем получаю список вроде этого
admin_system_config_changed_section_commercebug
admin_user_load_after
admin_user_load_before
adminhtml_block_html_before
adminhtml_controller_action_predispatch_start
application_clean_cache
controller_action_layout_generate_blocks_after
controller_action_layout_generate_blocks_before
controller_action_layout_generate_xml_before
controller_action_layout_load_before
controller_action_layout_render_before
controller_action_layout_render_before_adminhtml_system_config_edit
controller_action_postdispatch
controller_action_postdispatch_adminhtml
controller_action_postdispatch_adminhtml_system_config_edit
controller_action_postdispatch_adminhtml_system_config_save
controller_action_predispatch
controller_action_predispatch_adminhtml
controller_action_predispatch_adminhtml_system_config_edit
controller_action_predispatch_adminhtml_system_config_save
controller_front_init_before
controller_front_init_routers
controller_front_send_response_after
controller_front_send_response_before
core_abstract_load_after
core_abstract_load_before
core_block_abstract_prepare_layout_after
core_block_abstract_prepare_layout_before
core_block_abstract_to_html_after
core_block_abstract_to_html_before
core_collection_abstract_load_after
core_collection_abstract_load_before
core_config_data_load_after
core_config_data_save_after
core_config_data_save_before
core_config_data_save_commit_after
core_layout_block_create_after
core_locale_set_locale
core_session_abstract_add_message
core_session_abstract_clear_messages
http_response_send_before
model_load_after
model_load_before
model_save_after
model_save_before
model_save_commit_after
resource_get_tablename
store_load_after
store_load_before
Вам все еще нужно использоватьнекоторый интеллект догадывается, чтобы выяснить, какое событие вы хотите, но они названы достаточно интуитивно, чтобы вы обычно могли найти то, что вы ищете.