我实际上是在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)现在,我想要实现的是:当单击"Save Draft“按钮时,我希望页面忽略所有必填字段(标题字段除外),并继续表单提交。这是因为我们只保存草稿,所以除了标题之外的所有字段都不是必填项。
我如何实现上面的数字(2),保存草稿功能?
谢谢。
发布于 2019-11-15 07:46:16
首先,我建议将Product模型上的默认验证限制为仅title。这将允许提交草稿表单,而不会妨碍自动添加的HTML5验证。验证的其余部分可以设置为稍后将使用的不同的Product model类var,比如$save_validation。
接下来,使用JS表单提交处理程序将提交类型(例如Save或Save Draft)发送到控制器,可能带有一个隐藏的输入,该输入在单击按钮时会发生更改。
在处理提交的数据的控制器代码中,可以检查所处的情况,对于submitSave情况,通过合并$validate和$save_validation来设置模型的$validate数组(当然是在保存之前)。现在,您有了完整的验证集,并且只在需要时才应用它。
发布于 2019-11-15 15:38:30
绕过验证。
$this->model->save($data, ['validate' => false]));发布于 2019-11-15 17:43:01
只需删除“保存草稿按钮”的提交类型。
https://stackoverflow.com/questions/58853997
复制相似问题