search

Home  >  Q&A  >  body text

php - YII框架中控制器中的actions函数有什么用?难道只是用来做验证么?

他和比如actionIndex等这些方法有好什么区别呢?我在Yii的视频教程上面看见的是用来做验证码

巴扎黑巴扎黑2901 days ago572

reply all(5)I'll reply

  • 阿神

    阿神2017-04-10 14:49:54

    比如通过一个文件来定义action,而不是在controller中定义

    function actions(){
           return array(
                'edit'=>'application.controllers.post.UpdateAction',
            );
        }
    

    例如:
    官方的例子:SiteController 中

    public function actions()
        {
            return array(
                // captcha action renders the CAPTCHA image displayed on the contact page
                'captcha'=>array(
                    'class'=>'CCaptchaAction',
                    'backColor'=>0xFFFFFF,
                ),
                // page action renders "static" pages stored under 'protected/views/site/pages'
                // They can be accessed via: index.php?r=site/page&view=FileName
                'page'=>array(
                    'class'=>'CViewAction',
                ),
                            'search'=>array(
                                'class'=>'ext.esearch.SearchAction',
                                'model'=>'Post',
                                'attributes'=>array('title', 'tags', 'content'),
                            ),                   
            );
        }
    

    就可以直接通过 xxx?r=site/captcha 访问到验证码了!

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 14:49:54

    公用操作,AController和BController都有一个edit方法,就可以放到actions

    reply
    0
  • 阿神

    阿神2017-04-10 14:49:54

    谢邀!:)
    顾名思义,action 毫无疑问就是用来描述控制器的动作,一般都有 actionIndex ,即默认动作。
    举例:

    class PageController extends Controller
    {
        public function actionIndex()
        {
            echo 'default action';
        }
    }
    

    当用户请求时,便会触发默认的动作,输出 default action
    当然你也可以定义特定的 action,例如:

    class PageController extends Controller
    {
        public function actionIndex()
        {
            echo 'default action';
        }
    
        public function actionSelf()
        {
            echo 'new action';
        }
    }
    

    此时,当用户请求 self 动作时,就会触发 输出 new action
    当然你会发现还有 CAction 的类,这是使用 action 的另外一种方法:

    class SelfAction extends CAction
    {
    
        public function run()
        {
            echo 'new action';
        }
    }
    
    class PageController extends Controller
    {
    
        public function actions()
        {
            return array(
                'self' => 'application.controllers.actions.SelfAction',
            );
        }
    }
    

    建议题主在正式开发前,先对 YII 有个大致的了解,可以阅读这个文档:《Yii 权威指南》

    reply
    0
  • 迷茫

    迷茫2017-04-10 14:49:54

    当你要做一个单页, 比如“关于我们”、“联系我们”,可以全部写在 actions 里。

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 14:49:54

    用来复用action用的

    reply
    0
  • Cancelreply