我正在使用 cakephp 3.x 已将数据库查询放入模型中,我想检查当前的控制器操作,并根据我将进行数据库查询。
我知道我可以将控制器动作从我的控制器本身传递给我的模型功能但是有一种方法我只能在我的模型中检查我当前的控制器动作,这样我就不需要在我的多个函数中传递它了仅限内部模型。
我的尝试 - UsersTable.php
public function initialize(array $config)
{
parent::initialize($config);
$this->table('users');
$this->primaryKey('user_id');
echo '<pre>';
print_r($GLOBALS);
exit;
}
到目前为止,如果我这样做,我得到一个数组作为响应,我发现这是该阵列中其他东西的最佳结果
[REQUEST_URI] => /5p_group/users/add
我也试图使用这个
echo '<pre>';
print_r($GLOBALS['_SERVER']['HTTP_REFERER']);
exit;
给了我这个输出
http://localhost/5p_group/users/archived
所以最终我得到了我想要的结果,但我想要另一个正确的方法,cakephp 3.x使用..
那么有没有其他方式或更频繁的方式,我可以得到我当前的控制器动作?
任何想法都将受到赞赏..
由于
答案 0 :(得分:3)
首先,您应该在模型中使用路由类。所以在顶部你可以像下面那样调用它
use Cake\Routing\Router;
然后在初始化函数中,您可以检查
之类的参数 debug(Router::getRequest());
或者更具体地说,您可以使用
debug(Router::getRequest()->params['action']);
我认为这只是使用cakephp类的解决方案,虽然是一个小黑客。
如需更多功能参考,您可以在Router Class
访问该食谱答案 1 :(得分:0)
问题是关于模型的,但它出现在Google上。
在视图(.ctp
文件)中,使用
\Cake\Routing\Router::getRequest()->getAttributes();
CakePHP 3