Допустим я хочу обратывать в контролере различные акции (actionCatalog, actionOrder и т.п.), но потом я хочу, чтобы выполнялся метод общий для всех акций. Это возможно?
Допустим я хочу обратывать в контролере различные акции (actionCatalog, actionOrder и т.п.), но потом я хочу, чтобы выполнялся метод общий для всех акций. Это возможно?
Полагаю данный метод стоит использовать:
http://www.yiiframework.com/doc/api/CController#afterAction-detail
Конечно у слова action есть много различных переводов, но в контексте фреймворка оно означает “действие” (действие “добавить пост”, действие “удалить пост” и т.д.). Или я чего-то не знаю? ![]()
Ух ты ! Спасибо за подсказку. Вставил в контроллер вот такую штуку:
   protected function afterAction($action)
   {
        if ($action->id=='index')
        PHPMailer_main::mail_to_sms('index');
        ...
        ...
        ... 
    }
и все прекрасно работает, не надо возиться с каждым действием…
Ага, это оно. И заодно и другим пригодилось:
Спасибо!
чтобы не следить за наследованием afterAction в контролере и вообще с точки зрения расширяемости можно использовать фильтры
http://www.yiiframework.com/doc/api/CController#filters-detail
Пример:
	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
			array('ESetReturnUrlFilter + admin, view',),
		);
	}
<?php
/**
* SetReturnUrl Filter
*
* Keep current URL (if it's not an AJAX url) in session so that the browser may
* be redirected back.
* @version 1.0.2
* @author creocoder <creocoder@gmail.com>
*/
class ESetReturnUrlFilter extends CFilter
{
        protected function preFilter($filterChain)
        {
                $app=Yii::app();
                $request=$app->getRequest();
                if(!$request->getIsAjaxRequest())
                        $app->getUser()->setReturnUrl($request->getUrl());
                return true;
        }
}