在yii框架中,控制器的过滤器分为执行前和执行后,这里举例是在执行控制器前的过滤。
需要在components/文件夹下定义公共的TestAction.php文件,并且实现run()方法。这个action是各个控制器公用的。
class TestController extends Controller { /** * 定义外部的action * @return array */ public function actions() { return array( 'testa' => array( 'class' => 'TestAction' ) ); } public function filters() { return array(
//'tes+edit,modify' 仅仅edit和modify需要执行过滤 'tes-delete' //除了delete外,其他都需要执行过滤 ); } public function filterTes($filterChain) { echo "this is a filter... "; /* * 定义过滤器链,$filterChain让后面的控制器继续执行 */ $filterChain->run(); } public function actionTe() { echo $this->action->id.PHP_EOL; Yii::app()->clientScript->registerScriptFile(); echo "this is test controller... "; } public function actionDelete() { echo "this is delete action... "; } }