这是同样的问题, How to programmatically create instance of CakeRequest?
就我而言,我想创建post
请求
$request = new CakeRequest('/posts/view');
$request->data = array('key' => 'value');
我试着用这个
$request->addDetector('post',
array (
'env' => 'REQUEST_METHOD',
'value' => 'POST'
)
);
但是当我在下一页上回显$this->request->method()
时,它总是输出GET
。如何将请求类型设置为post
?
更新 蛋糕版2.3
UPDATE2
实际上我想要做的是这样的:假设我有一个用于创建帖子的表单,包含标题和内容字段。现在,如果用户未登录,则在该表单下我显示了登录/注册表单的输入(因此我在该页面上只有一个表单),因此用户将填写登录或注册信息的用户名/密码,如果他选择注册,请点击signin and publish
或signup and publish
按钮。在db的表的临时行和/或会话中保存帖子的信息后,我需要对用户进行身份验证,因为我想发送用户控制器的signup and publish
操作的发布请求,并且不更改那些注册/登录功能(我正在检查发布请求)我想创建此发布请求。我知道我也可以将登录/注册动作移动到某个组件,所以我可以从不同的控制器中使用它们,但注册动作有很多其他部分,它使用其他功能和组件,我不想移动所有这些逻辑到组件。
由于
答案 0 :(得分:0)
您可以修改PHP超级全局,伪造一个帖子请求,CakeRequest
解析:
$_POST = array('key' => 'value');
$_SERVER['REQUEST_METHOD'] = 'POST';
$request = new CakeRequest('/posts/view');
然而这是一个黑客,应该避免。我无法想象你想要使用这样的东西。