我在CakePHP v2.4上。
在模型的afterSave()
回调中,我想根据请求的条件有条件地做一些事情。但是,$this->request
似乎没有定义:
public function afterSave( $created, $options=array() ) {
$this->log( $this->request ); //NOTHING HERE
}
我该怎么做?
答案 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($这 - >请求);