Январь4
Всем привет. В этой статье я хочу поделится с Вами о том как выполнять какие-то действия до/после выполнения действий в методе Action контроллера.
Для чего это может понадобится? Ну например, перед тем как делать действия вам необходимо удостоверится залогинелся пользователь или нет. Конечно можно в каждом методе Action проверять залогинелся ли юзер или нет, но при таких условиях и в зависимости от громоздкости Вашего приложения необходимо это условие прописывать во всех методах, это не удобно, а вдруг Вы решите как-то сменить метод проверки на залогиненность, что тогда? Переписывание всех условия. Для решения данной задачи, можно создать контроллер который будет наследоваться от Zend_Controller_Action и в этом контроллере будет метод preDispatch или postDispatch которые будут делать действия до или после выполнения действий в самом экшене.
class BaseController extends Zend_Controller_Action
{
/**
* Pre-dispatch routines
*
* (non-PHPdoc)
* @see Site/branch/Lib/Zend/Controller/Zend_Controller_Action#preDispatch()
*/
public function preDispatch()
{
$auth = Zend_Auth::getInstance();
$userAuth = $auth->getStorage()->read();
if (isset($userAuth->Id))
{
$this->_redirect('/');
}
}
}
class Module_IndexController extends BaseController
{
public function indexAction()
{
// какие-то свои действия
}
}
такие же работает и метод postDispatch.
Дешевая техника в интернет-магазине http://bestchinashops.ru/chinabuye/
Есть еще:
метод init() — этот метод выполняет действия вообще до метода preDispatch.
метод Render() — этот метод рисует данные вьюхи.
более подробно о всех методах вот тут — Контроллеры действий
Также мне было интересно в какой последовательности выполняются различные служебные методы, ниже приведена табличка:
позиция |
метод |
1 |
__construct |
2 |
init |
3 |
preDispatch |
4 |
indexAction |
5 |
postDispatch |
Именно в такой последовательности запускаются методы. Юзайте на здоровье.
Статья просмотренна 42652 раз, зашло посетителей 10549