yii Actions 理解

来源:互联网 发布:淘宝如何提高排名 编辑:程序博客网 时间:2024/05/01 10:25

在需要使用的控制器中,重写actions 动作


如果动作方法存在于控制器中并且不是actions(),会创建一个CInlineAction对象,否则通过actions()中会返回外部动作的关联数组射找到外部动作对象,这个好处是可以共用一些同样的动作,比如下面curd动作代码,通过http://www.test.com/index.php?r=post/read就可以通过外部ReadAction对象读取post

[php] view plaincopy
  1. class PostController extends Controller  
  2. {  
  3.     function actions(){  
  4.         return array(  
  5.             'create' => array(  
  6.                 'class'      => 'application.actions.CreateAction',  
  7.                 'modelClass' => 'Post',  
  8.             ),  
  9.             'update' => array(  
  10.                 'class'      => 'application.actions.UpdateAction',  
  11.                 'modelClass' => 'Post',  
  12.             ),  
  13.             'read' => array(  
  14.                 'class'      => 'application.actions.ReadAction',  
  15.                 'param'      => 'Postid',   
  16.                 'modelClass' => 'Post',  
  17.             ),            
  18.             'delete' => array(  
  19.                 'class'      => 'application.actions.DeleteAction',  
  20.                 'modelClass' => 'Post',  
  21.             )  
  22.         );  
  23.     }  
  24. }  
在actions()中还可以指定CViewAction对象,它其实就是YII框架写的一个调用外部动作的一个扩展。如下面代码可以按照用户指定的参数显示一个视图,通过GET参数来定位视图文件,这样对加载静态内容而又不用单独写动作方法很有帮助。
[php] view plaincopy
  1. public function actions()  
  2. {  
  3.     return array(  
  4.         'page'=>array(  
  5.             'class'=>'CViewAction',  
  6.             'basePath' => '$path',  
  7.             'defaultView '=> '$view'  
  8.         ),  
  9.     );  
  10. }  

0 0