我的 CommentsController 操作之一,即“添加”操作有一些特殊情况。因为我在 PostsController 的“视图”视图上有一个“添加评论”表单,所以我有一个“add_comment”元素而不是评论的“添加”视图。这就是我可以在帖子的“视图”视图中插入带有表单的元素。我希望这听起来不会太复杂。
现在,在“add_comment”元素中,表单被提交给 CommentsController 的实际“add”动作。如果表单必须再次呈现,因为例如无效的用户输入,表单会再次呈现——这一次——调用“添加”评论视图。此“添加”视图仅再次包含“add_comment”元素,如上文所述,该元素包含实际表单。
现在问题是,我将 Security 组件添加到我的 CommentsController 以获得 CSRF 保护。我的 CommentsController 的所有管理操作都得到了保护,即 e 令牌在表单内呈现并在提交表单时进行检查。
尽管如此, add_comments Element 表单仍然没有获得令牌。可能是因为它是一个元素而不是对应的视图。
如何手动将令牌插入到元素的表单中,或者如何更好地解决这个问题?
谢谢
编辑:还有我关于设置的其他问题 - 它应该解释一下
EDIT2: 这是我的 add_comment 元素里面的内容
EDIT3: 这是 add_comment 元素的 HTML 输出。随机数应该在<div style="display:none;">
零件中。
EDIT4:我放入Debugger::log($this->Form->request->params);
元素(add_comment.ctp)和视图(add.ctp),这显示了输出。
我还上传了整个 CommentsController(这里)。请注意,我指定了一个黑洞函数来捕获“auth”类型的错误。这是因为,每次我在 add_comments.ctp 元素中输入无效数据并且 - 通过提交表单 - 调用 CommentsController 的实际添加操作(以及因此添加评论视图)时,我都会收到类型为 'auth 的黑洞错误',我无法解释,所以我用这种方式抓住了它——这甚至可能与我的问题有关。