Cookbook为版本2.3引入了停用表格强制取消的可能性。或者至少我理解为: Quote:来自http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html
“版本2.3中的新内容。
从2.3开始,HTML5 required属性也将添加到输入中 基于验证规则。您可以明确设置所需的密钥 options数组为字段覆盖它。跳过浏览器验证 触发整个表单,您可以设置选项'formnovalidate'=> 对于使用FormHelper :: submit()或生成的输入按钮,则为true 设置'novalidate'=>在FormHelper :: create()的选项中为true。“
在我的情况下,我搜索了这个模型,当然用户不需要填写所有必填字段,例如添加数据集。所以我想停用我的搜索表单的验证。
我尝试了所有三种变体并且看不到任何结果:在我的搜索表单中仍然必须使用创建的必填字段。
我做的那些尝试:
首先尝试:
echo $this->Form->create('Partner', array('action' => 'search', 'novalidate' => true));
第二次尝试:
echo $this->Form->input('name',
array('required' => false, 'value' => $this->Session->read('Searchparameter.name'))
);
第三次尝试:
$this->Form->submit('Submit', array('formnovalidate' => true));
echo $this->Form->end();
变化:
echo $this->Form->end(__('Submit'), array('formnovalidate' => true));
我理解错了什么?顺便说一下:我确实停用了缓存,所以这不应该是问题。
当然我仍然可以使用旧的解决方法进行此验证,但是当2.3提供此选项时,我很乐意使用它。
Calamity Jane
答案 0 :(得分:7)
所以我猜我发现了问题并至少让一个人工作了:
我现在使用的是:
echo $this->Form->create('Partner', array('action' => 'search', 'novalidate' => true));
我想我的预期是字段不会标有fat标签和星号。那些仍在那里,但不管你不用再填写它们了。而我测试的时间确实提交了表格,我想我有99个vacrations中的一个,这是非常错误的。
如果这让我感到高兴是我的决定,但显然我可以关闭HTML5验证。 如果我想让标签不是大胆的&星号,还有一个选项吗?
Calamity Jane
答案 1 :(得分:1)
解决方案实际上要简单得多。如果要在特定视图中禁用验证,实际上只需在创建表单时引用不存在的模型。例如,您可以执行类似
的操作 echo $this->Form->create('PartnerSearch');
在您的控制器中,您可以通过以下方式访问表单字段:
$this->request->data["PartnerSearch"]["field"]
而不是通常的方式:
$this->request->data["Partner"]["field"]
答案 2 :(得分:0)
对我来说,要跳过浏览器验证,是的,array('novalidate' => true)
确实有效。
<?php echo $this->Form->create('MyModelName', array('novalidate' => true)); ?>
标签不是粗体&amp;星号,
<?php echo $this->Form->input('myinput', array('required' => false));
答案 3 :(得分:0)
在我的情况下,我使用按钮来提交表单。这让我更具灵活性。在那种情况下,我使用了属性&#39; formnovalidate&#39;传递按钮的选项数组。表单看起来如下所示:
<?php
echo $this->Form->create('yourCtrllerName',array('action'=>'actionInYourCtrller'));
echo $this->Form->input('your_field_pass',array('label'=>'pass','type'=>'password'));
.... other Form fields .....
echo $this->Form->button('Button Caption',
array('type'=>'submit',
'name'=>'keyInsideTheDataArrayForButtonData',
'formnovalidate' => true,
'value'=>'valueOfTheAboveKeyInTheDataArray',
'style'=>'<style you want to apply to button>',
... other options if needed...
)
);
echo $this->Form->end();