yii2如何获取当前url的controller和action?

natici 2016-12-21 02:40:02
基础模板,backend是模块,user是controller,index是action
例如:http://www.abc.com/backend/user/index

我在user controller的init()里面var_dump(\Yii::$app->controller->action->id); 报错,提示Trying to get property of non-object
在非init()方法里面是可以正常获取的,但这不是我想要的,我是想每一个方法里面都获取当前action id,但不想每个action里面都写一遍这行代码。请高手帮忙
...全文
396 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
natici 2016-12-28
  • 打赏
  • 举报
回复
感谢回答! 我在这个版块也就提了2个问题,没有哪里都是我吧。。。因为这个版块不活跃,21号提的问题一直在第一条问题。
Edrupal 2016-12-23
  • 打赏
  • 举报
回复
还有为什么这个版块哪里都是你。。。。。。。
Edrupal 2016-12-23
  • 打赏
  • 举报
回复
引用 1 楼 YiXian_Qing 的回复:
你应该好好看一下yii2的源码,Application.php这个类中没有action属性,只有controller属性,当然会报错。 针对你的问题你可以通过事件或者行为来实现,举例来说:通过行为 1:定义一个行为

namespace backend\behaviors;


use yii\base\Behavior;

class Test extends Behavior
{
    public function events()
    {
        return ['beforeAction'=>'test'];
    }
    public function test($event){
        echo \Yii::$app->controller->action->id;
    }
}
2:如果是应用级别的(也就是所有控制器全部),那么就在配置文件中绑定此行为,如果是针对某个控制器,那么就通过behaviors方法绑定此行为 以上就是你想要的了
上面说的Application.php这个类中没有action属性,只有controller属性,当然会报错,这句话是有前提的,在应用没有run之前是不存在的,你最好看一下yii2的流程
Edrupal 2016-12-23
  • 打赏
  • 举报
回复
你应该好好看一下yii2的源码,Application.php这个类中没有action属性,只有controller属性,当然会报错。 针对你的问题你可以通过事件或者行为来实现,举例来说:通过行为 1:定义一个行为

namespace backend\behaviors;


use yii\base\Behavior;

class Test extends Behavior
{
    public function events()
    {
        return ['beforeAction'=>'test'];
    }
    public function test($event){
        echo \Yii::$app->controller->action->id;
    }
}
2:如果是应用级别的(也就是所有控制器全部),那么就在配置文件中绑定此行为,如果是针对某个控制器,那么就通过behaviors方法绑定此行为 以上就是你想要的了

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧