对于那些之前可能读过这篇文章的人,我做了一些研究并彻底修改了我的问题。我一直遇到一个问题,即我的表单请求被安全组件阻塞,尽管在禁用安全组件时一切正常。我已经将其追溯到表格中的一行:
<?php echo $form->create('Audition');?>
<fieldset>
<legend><?php __('Edit Audition');?></legend>
<?php
echo $form->input('ensemble');
echo $form->input('position');
echo $form->input('aud_date');
// The following line works fine...
echo $form->input('owner');
// ...but the following line blackholes when Security included
// and the form is submitted:
// echo $form->input('owner', array('disabled'=>'disabled');
?>
</fieldset>
<?php echo $form->end('Submit');?>
(为了清楚起见,我已经注释掉了违规行)我认为我通过使用表单助手来遵守规则;据我所知,这是安全组件中的一个错误,但我对 CakePHP n00b 太了解了,无法确定。我很想得到一些反馈,如果它是一个真正的错误,我会将它提交给 CakePHP 团队。我也很想知道我是否只是愚蠢并在这里遗漏了一些明显的东西。
(很抱歉在这里发表评论,但我没有足够的空间给他们评论)
更新:谢谢 Jesh,你 100% 正确——“禁用时不会提交输入值”。我什至在官方 HTML 规范中查找了它,其中说:“[A disabled element] 无法接收用户输入,其值也不会与表单一起提交”。但是 Cake正在用表单提交值!当我禁用安全组件时,我可以查看与表单一起提交的 POST 数据,果然,“所有者”字段已提交!不幸的是,这正是我想要的行为,但它似乎与官方 HTML 规范不一致......所以我认为这是标准表单助手的错误。我会将此作为错误报告给 CakePHP 团队,但我
另外,Jesh,您使用安全密钥并将其设置为 false 的想法效果很好,但我真的不想让这个字段不安全(事实上,我特别不想让这个字段不安全),而且它在我看来,我不应该这样做。事实上,现在我认为这也可能是安全组件中的一个错误;我正在使用FormHelper 在这里创建我的表单——所以安全组件不应该能够处理这个吗?
@Miles:您的解决方案也很好用——谢谢!但它仍然留下了我在上面提出的相同问题。