Выполнение функции перед просмотром - PullRequest
1 голос
/ 15 сентября 2010

Я новичок в Zend Framework MVC.Мне очень нравится работать с средой MVC, но иногда я путаюсь со структурой.

У меня есть простая задача, я хотел бы отметить некоторых пользователей на нашем сайте, чтобы отслеживать их движения.Для этого я настроил простую таблицу в базе данных и начал кодировать в моей функции _initTracking () загрузочную ловушку.Затем я понял, что подхожу к этому с неправильной стороны - я хотел бы, чтобы это была одна из последних функций, которая запускается, чтобы избежать путаницы в моих записях отслеживания с перенаправлениями заголовков и чтобы гарантировать наличие всех автоматически загружаемых классов.Как мне это сделать?Есть ли функция типа "onBeforeRender"?Если есть, я не смог бы его найти.

Спасибо

Ответы [ 3 ]

1 голос
/ 15 сентября 2010

Я бы предложил использовать плагин ZF.Вы можете отслеживать действия пользователя в методе плагина postDispatch() или dispatchLoopShutdown(), в зависимости от того, насколько гранулированным должно быть ваше отслеживание.

Некоторое чтение о плагинах ZF - http://framework.zend.com/manual/en/zend.controller.plugins.html

Также действительноаккуратная статья о жизненном цикле запросов в Zend Framework - http://www.eschrade.com/page/zend-framework-request-lifecycle-4b9a4288.

0 голосов
/ 15 сентября 2010

Я думаю, что лучшее место для этого - хук postDispatch () в вашем контроллере.

Обратите внимание на http://framework.zend.com/manual/en/zend.controller.action.html,, в частности, на раздел «Крюки до и после отправки».

Это подойдет для размещения вашего кода отслеживания в базовом контроллере - который будут расширять ваши контроллеры действий, сохраняя код отслеживания в одном месте.

0 голосов
/ 15 сентября 2010

Закончилось положить это в сценарии макета. Вероятно, есть лучший способ сделать это, но в моем случае (имея все представления, я хотел, чтобы код выполнялся в двух макетах), это было самым простым и достигло моей цели.

...