我实际上在CakePHP 2.x中这样做。
<?php echo $this->Form->create('Product', array('url' => array('controller' => 'products', 'action' => 'add'), 'id' => 'form-add')); ?>
<?php echo $this->Form->input("title", array("div" => false, "label" => false, 'class' => 'form-control', 'required'=>true)); ?>
<?php echo ($this->Form->input('description', array('type' => 'textarea', 'rows' => '6','div'=>false, 'label'=>false, 'placeholder'=>__('Description...'), "class" => "form-control Description", 'required'=>true)));?>
<button class="btn" type="submit" id="submitSaveDraft">Save Draft</button>
<button class="btn" type="submit" id="submitSave">Save</button>
<?php echo $this->Form->end(); ?>
我有一个包含一些字段和两个提交按钮的表单。一个提交按钮是“保存草稿”,另一个只是标准的“保存”。
1)如果单击“保存”按钮,页面将验证表单上的所有输入,即,如果未填写必填字段,将提示消息,并且表单将不提交。
2)现在,我要实现的是:单击“保存草稿”按钮时,我希望页面忽略所有必填字段(“标题”字段除外),然后继续提交表单。这是因为我们仅保存草稿,所以除了“标题”以外的所有字段都不是必需的。
如何获得数字(2),并保存上面的草稿功能?
谢谢。
绕过验证。
$this->model->save($data, ['validate' => false]));
只需删除“保存草稿按钮”的提交类型
[首先,我建议将对Product模型的默认验证限制为仅标题。这样一来,草稿表单即可提交,而不会自动添加HTML5验证。验证的其余部分可以设置为其他Product模型类var,稍后将使用它,例如$save_validation
。
[下一步,使用JS表单提交处理程序,将提交类型(例如,保存或保存草稿)发送到控制器,可能带有隐藏的输入,该输入在单击按钮时会更改。
在处理发布数据的控制器代码中,您可以检查您所处的情况,对于submitSave
情况,通过合并$validate
和$validate
来设置模型的$save_validation
数组(保存之前当然)。现在,您拥有完整的验证集,并且仅在需要时应用。