php - yii2 更新验证规则

标签 php validation model yii2

我有一个模型和验证规则:

class User extends ActiveRecord implements IdentityInterface
{
 ...
public function rules()
{
    return [
        [['username', 'password', 'email'], 'required', 'on' => 'insert'],
        [['password', 'email'], 'required', 'on' => 'update'],
    ]
}

实际上代码没有生成验证器。当我删除“打开”部分时,一切顺利。

深入研究官方文档并通过网络搜索并没有帮助我理解问题所在,以及为什么我不能为不同的操作设置自定义必填字段。

最佳答案

场景不是由 Yii2 ActiveReccoed 自动设置的。如果你需要一个特定的场景,你必须创建它并分配

例如更新...

public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios['update'] = ['password', 'email'];//Scenario Values Only Accepted
    return $scenarios;
}

你也可以在你的 actionUpdate 中设置场景

public function actionUpdate($id)
{
   $model = $this->findModel($id);
   $model->scenario = 'update';
  ........
}

关于php - yii2 更新验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35609902/

相关文章:

php - 新服务器 : Troubleshooting PostgreSQL Syntax Error

php - Cakephp "virtual"与另一个数据库一起使用的模型名称

symfony - 如何为 Doctrine 实体类编写测试类?

php - 根据 Laravel 中的表单输入验证复合模型字段的唯一性?

php - 推送器 PHP "server"不工作

javascript - 对于数据库中的所有数据数组,如何创建带有启用\禁用字段的复选框?

php - Laravel 5 REST API 验证

validation - AFNetworking 2.0有效证书,仍然无法连接(错误1012)

@ 之后的 HTML 电子邮件验证

asp.net-mvc - 如何使用 DataAnnotations 进行 ASP.NET MVC 模型验证,其中 ViewModel 包含来自外部 Web 服务的对象?