Метод контролера вызываемый независимо от акции

Допустим я хочу обратывать в контролере различные акции (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

Пример:

  1. в контролере прописываем

	/**

	 * @return array action filters

	 */

	public function filters()

	{

		return array(

			'accessControl', // perform access control for CRUD operations

			array('ESetReturnUrlFilter + admin, view',),

		);

	}

  1. сам фильтр с неофициальных расширений для yii

<?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;

        }

}