我实际上是在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)?
谢谢。
答案 0 :(得分:0)
首先,我建议将对Product模型的默认验证限制为仅标题。这样一来,草稿表单即可提交,而不会自动添加HTML5验证。其余的验证可以设置为其他产品模型类var,稍后再使用,例如$save_validation
。
接下来,使用JS表单提交处理程序,将提交类型(例如,保存或保存草稿)发送到控制器(可能带有单击按钮后更改的隐藏输入)。
在处理已发布数据的控制器代码中,您可以检查您所处的情况,对于submitSave
情况,通过合并$validate
来设置模型的$validate
数组,然后$save_validation
(当然要先保存)。现在,您拥有完整的验证集,并且仅在需要时应用。
答案 1 :(得分:0)
绕过验证。
$this->model->save($data, ['validate' => false]));
答案 2 :(得分:0)
只需删除“保存草稿按钮”的提交类型