我通过POST表单将特定值发布到我的CakePHP应用程序。在AppController中我处理这个特定的POST数据,然后我取消设置$ this-> request->数据,例如
if(!empty($this->request->data['Keyboard'])) {
$this->Session->write('Keyboard.active', $this->request->data['Keyboard']['active']);
unset($this->request->data);
}
之后我希望取消设置所有请求数据(因此$this->request->data
)。在我的子控制器中,我将parent::beforefilter();
作为其各自beforeFilter
函数中的第一行代码,确保beforeFilter
的{{1}}已启动。但是,在我的childController中,以下代码行仍将评估为true:
appController
如何“取消”is('post')来电?我在上面的if($this-request->is('post'))
中也尝试了$this->request->is('post') = false
,但没有成功。
答案 0 :(得分:1)
$this->request->is($anything)
的“问题”(至少在你的情况下)是它只是一个比较变量的函数,而不是一个setter。
以下是API code,以防您想要查看。
因此,基本上,此代码将变量env('REQUEST_METHOD')
与POST
进行比较(位于代码的detectors部分)。
$this->request->is('post') = false
无法发挥作用。像
$_ENV["REQUEST_METHOD"] = null;
//or
unset($_ENV["REQUEST_METHOD"]);
取消设置后,请求数据可能有效,但我不保证,因为我没有尝试过。
我觉得这种方法很脏,如果没有可用的功能我根本不喜欢弄乱这些变量,但我希望你考虑所有可能的选择以避免弄乱{{1已经看到这是唯一的解决方案。否则你应该发表另一个问题来解决这个问题,看看是否会出现更好的方法。
希望在你的情况下有所帮助。