Помогите с хуками, пожалуйста / cogear - система управления сайтами, бесплатная cms для социальной сети http://cogear.ru/hooks_help-234.html/ ru http://cogear.ru http://cogear.ru/templates/cogear/img/logo.png cogear - система управления сайтами, бесплатная cms для социальной сети <![CDATA[]]> http://cogear.ru/hooks_help-234.html#comment-3469 http://cogear.ru/hooks_help-234.html#comment-3469 admin Fri, 26 Mar 2010 13:01:39 GMT <![CDATA[]]> http://cogear.ru/hooks_help-234.html#comment-3467 http://cogear.ru/hooks_help-234.html#comment-3467 artem-kovardin Fri, 26 Mar 2010 11:30:45 GMT <![CDATA[]]> http://cogear.ru/hooks_help-234.html#comment-3465 http://cogear.ru/hooks_help-234.html#comment-3465 Смотрите, вы можете получать доступ к любым моделям любых шестеренок через любые хуки.
Например, вы можете в одной шестеренке хукнуть свою же модель.
Чтобы хуки работали на определенные методы моделей, то название метода должно начинаться с_, а в реале вызываться без него.
Помните, что имена у всех моделей должны быть уникальными.
/gears/test/models/test.php:
//Пример class Test{ … function _action($a,$b){ … } … } // Вызываем без _ — вот тут и происходит магия. $this->test->action(); Теперь вы можете в любой шестеренке создать хук этого метода. Допустим, шестеренка называется my_gear.
/gears/my_gear/_hooks.php:
… // Если хук идет перед методом function my_gear_test_action_($Test,$a,$b){ … } … // Если хук идет после метода и оперирует его результатом function my_gear_test_action_after_($Test,$result,$a,$b){ … // Если хотите отправить исправленный результат в другие хуки return func_get_args(); } … Таким образом название функции хука можно разбить на следующие составляющие:
  • my_gear — название исходной шестеренки
  • test — название адресуемой модели (имена всех моделей уникальны)
  • action — название адресуемого метода
  • [after] — возможность отработать хук после выполнения метода, изменив его результат
  • _ — нижнее подчеркивание указывает, что мы хукаем модель, а не контроллер.
]]>
admin Fri, 26 Mar 2010 11:18:53 GMT