CakePHP:如何在模型中访问$ this->请求

时间:2014-01-15 14:10:42

标签: php cakephp cakephp-2.0

我在CakePHP v2.4上。

在模型的afterSave()回调中,我想根据请求的条件有条件地做一些事情。但是,$this->request似乎没有定义:

public function afterSave( $created, $options=array() ) {
    $this->log( $this->request ); //NOTHING HERE
}

我该怎么做?

2 个答案:

答案 0 :(得分:24)

您可以通过全局路由器类访问它。

public function afterSave( $created, $options=array() ) {
    $this->log( Router::getRequest() );
}

答案 1 :(得分:7)

不是在afterSave()方法中调用单音(Router :: getRequest())而是引入Mathew建议的紧耦合,为什么你不能传递你需要的任何参数以及你尝试的记录数据保存?

然后,它会出现在afterSave()中的$ this->数据中。加上这种方式很容易测试。在这个方法中测试Router :: getRequest()很有趣。

如果你需要整个请求,你可以在AppModel中添加一个属性Model :: $ request,并在那里添加一个方法setRequest(),在你的控制器beforeFilter()中你可以做$ this-> {$ this- > modelClass} - GT;了setRequest($这 - >请求);