Cakephp-向插件控制器操作提交表单时出现问题

Cakephp-向插件控制器操作提交表单时出现问题,cakephp,plugins,Cakephp,Plugins,我在cakephp 3岁以上,面临着一个有点奇怪的问题 通过向插件控制器的操作提交表单(我正在使用 插件(第一次)。在尝试了我正在发布的不同已知内容之后 这个 这里直接讨论一下我的“论坛”插件的search_controller.php的“index”视图中的表单: 而如果我在相同的beforeFilter中尝试相同的代码 控制器,即search_controller.php,它工作良好,可打印为 如下: 最后是beforeFilter代码(search_controller.php的): 仅供

我在cakephp 3岁以上,面临着一个有点奇怪的问题 通过向插件控制器的操作提交表单(我正在使用 插件(第一次)。在尝试了我正在发布的不同已知内容之后 这个

这里直接讨论一下我的“论坛”插件的search_controller.php的“index”视图中的表单:

而如果我在相同的beforeFilter中尝试相同的代码 控制器,即search_controller.php,它工作良好,可打印为 如下:

最后是beforeFilter代码(search_controller.php的):

仅供参考,我是否注释掉“parent::beforeFilter();”或 甚至禁用$使用我的控制器(如果您怀疑) 结果是相同的,即控件不进行“索引”操作 如果是表单提交,而如果是页面提交,则工作正常 呼叫页面的url/操作为。 如果我直接调用url,它会很好地加载表单,但当我提交它时,它会 从不进入控制器的“索引”操作,因此没有视图 渲染

如果我在“论坛”插件环境中尝试相同的代码集,即在正常的应用程序中,它就可以正常工作

在过去的3个多小时里,我一直在努力想办法摆脱这种状况,但是
没有成功。如果能帮我解决这个难题,我将不胜感激

如果(!empty($this->data))的话,你有没有试过在
中放一个else,然后做一个
pr()
,因为你的帖子可能不是空的

这或url数组的格式不正确

从ln759开始


所以我想你首先需要插件?

如果(!empty($this->data))
你有没有试过在
中放一个else,然后做一个
pr()
,因为你的帖子可能不是空的

这或url数组的格式不正确

从ln759开始


所以我想您首先需要插件?

您是否使用ACL或类似的工具?在beforeFilter中,对请求执行pr。查看所请求的操作以确保请求正确

您是否使用ACL或任何类似工具?在beforeFilter中,对请求执行pr。查看请求的操作以确保请求正确

我终于找到了

每当无法找到包含表单数据的安全令牌时,安全组件就会将请求放入黑洞。我了解到“安全性”组件“干扰”了$form->create()方法,并在每次$form->create()调用中放置一个标记作为隐藏字段。在表单submit上,在beforeFilter之后和进入控制器“action”之前,它检查该令牌,并在验证失败时终止所有内容。不幸的是,cake日志中没有错误消息或条目

在我的例子中,我一直在创建我自己的自定义标记,而不是在$form->create方法的帮助下,因此没有生成导致所有痛苦的标记

我通过放置

$this->Security->validatePost = false; 
在beforeFilter的末尾

谢谢大家

我终于明白了

每当无法找到包含表单数据的安全令牌时,安全组件就会将请求放入黑洞。我了解到“安全性”组件“干扰”了$form->create()方法,并在每次$form->create()调用中放置一个标记作为隐藏字段。在表单submit上,在beforeFilter之后和进入控制器“action”之前,它检查该令牌,并在验证失败时终止所有内容。不幸的是,cake日志中没有错误消息或条目

在我的例子中,我一直在创建我自己的自定义标记,而不是在$form->create方法的帮助下,因此没有生成导致所有痛苦的标记

我通过放置

$this->Security->validatePost = false; 
在beforeFilter的末尾


谢谢大家

这是我的beforeFilter代码:公共函数beforeFilter(){parent::beforeFilter();$This->Auth->allowedActions=array(*”);if(!empty($This->data)){pr($This->params);}}这是我的“索引”操作的顶部:if(!empty($This->data)){pr This->data);}否则{print($empty);}在表单提交的情况下,在“索引”中,它既不打印$this->data也不打印“Empty”。在论坛提交的情况下,它根本不进入“索引”操作。请在下一条评论中检查打印在beoforeFilter中的$this->params的输出是否有任何url错误。数组([pass]=>Array()[named]=>Array()[plugin]=>forum[controller]=>search[action]=>index[url]=>Array([ext]=>html[url]=>forum/search/index)[form]=>Array()[data]=>Array([search]=>Array([关键词]=>Hello论坛[advanced]=>0][Topic]=>Array([power]=>0[category]=>[title]=>[auther]=>[sortby]=>相关性[results\u per\u page]=>10])这是我的beforeFilter代码:公共函数beforeFilter(){parent::beforeFilter();$this->Auth->allowedActions=array(*”);if(!empty($this->data)){pr($this->params);}}这是我的“索引”操作的顶部:if(!empty($this->data)){pr($this->data);}else{print(“empty”);}如果是表单提交,在“索引”中,它既不打印$this->data也不打印“empty”。在论坛提交的情况下,它根本不会进入“索引”操作。请在下一条评论中检查BeofRefilter中打印的$this->params的输出是否有任何url错误。数组([pass]=>Array()[named]=>Array()[plugin]=>forum[controller]=>search[action]=>index[url]=>Array([ext]=>html[url]=>论坛/搜索/索引[form]=>Array()[data]=>Array([search]=>Array([keyword]=>Hello forum[advanced]=>0)[Topic]=>Array([power]=>0[category]=>0[title]=>auther]=>[sortby]=>相关性[每页搜索结果]=>10])
Array
(
    [Search] => Array
        (
            [keyword] => Hello Forum
        )

)
public function beforeFilter() {
    parent::beforeFilter();
    if(!empty($this->data)) {
        pr($this->data);
    }
}
$defaults = $params = array('plugin' => null, 'controller' => null, 'action' => 'index');
$this->Security->validatePost = false;