yii框架中关于控制器中filter过滤器和外部action的使用
在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...\r\n"; /* * 定义过滤器链,$filterChain让后面的控制器继续执行 */ $filterChain->run(); } public function actionTe() { echo $this->action->id.PHP_EOL; Yii::app()->clientScript->registerScriptFile(); echo "this is test controller...\r\n"; } public function actionDelete() { echo "this is delete action...\r\n"; } }