【问题标题】:Disable validation in Yii在 Yii 中禁用验证
【发布时间】:2013-01-07 07:17:18
【问题描述】:


我正在尝试使用 Yii 在我的项目中实现“另存为草稿”功能。我有一个带有 2 个按钮的表单:- 提交和保存。单击提交按钮后,在验证所有字段(包括必填字段)后,表单数据将保存到数据库中。它工作完美。单击保存按钮时,我需要将没有默认验证的表单数据保存到数据库中。如何在控制器操作中实现这种禁用验证?
所有建议都是可以接受的..
谢谢

【问题讨论】:

    标签: yii yii-events


    【解决方案1】:

    同时关闭验证规则很容易:

    $model->save(false);
    

    这不会进行任何验证,只会尝试保存您的模型(在数据库端可能仍然会失败)。

    但如果你想运行 一些 验证,你可能需要查看Scenarios here。它们允许您根据初始化模型的场景指定一组不同的规则。这样你就只能打开/关闭整套验证规则。

    $model = new Thingy();
    $model->save(); // All default validation rules
    
    $model = new Thingy('draft');
    $model->save(); //Applies all default & "draft" validation rules
    

    【讨论】:

    • 有没有办法让它与客户端验证一起工作?我和OP有类似的问题。在服务器端,当我不需要验证时不验证很简单,但是如果启用了客户端验证,单击任一按钮都会使其验证。我可以以某种方式在按钮按下时设置场景吗?
    • 我不再和 Yii 一起工作了,也不确定那个问题的答案。所以我做了一些搜索,发现自己回答了这个问题,我想我应该记住我学到的东西:stackoverflow.com/questions/12390220/… 简而言之。不,只会使用构建表单的场景。除非从那以后这在 Yii 核心中发生了变化。
    【解决方案2】:

    您的问题在控制器中说,但据我所知,在控制器中我们有过滤器,例如检查权限。可以按照指南的this section 中的说明覆盖它。如果您的意思是在模型中完成的验证,那么您可以使用场景(通过将规则绑定到场景来绕过验证,而在其他场景中不进行验证)。 检查this thread 讨论类似问题

    如果我误解了您的问题,请在此处发表评论,以便我相应地更新答案!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多