谁一开始就是大神?

注释rules方法插入数据库为空,放开rules可以正常插入数据,求教[2.0]

public function rules()
{
    return [
        [['name'], 'required'],
    ];
}

这是models里的rules方法。

$form = ActiveForm::begin();
?>

<?= $form->field($model,'name')->textInput(); ?>
<?= Html::submitButton('创建') ?>

<?php ActiveForm::end();?>

这是视图中的表单,就一个name文本框。

public function actionAdd(){
    $model = new Category();
    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        echo 'yes';die;
    }
    return $this->render('add',['model'=>$model]);
}

这是控制器的添加方法。

数据库就两个字段,一个id,一个name。
现在的情况是如果注释掉models中的rules方法,插入数据库的name字段是空值,如果不注释rules方法就都正常。
难道必须要有rules方法才可以吗?

因为你用了$model::load方法,该方法就是要把你post过来的数据赋值给rules中定义的字段。
因此在使用load的情况下rules是必须的,即时你不做验证的话。
如果没有rules,你post过来的数据也就类似没办法赋值给model的属性,因此结果会是null。
必须过规则,不想验证就指定属性为save

赞(0) 打赏
未经允许不得转载:菜鸟之家 » 注释rules方法插入数据库为空,放开rules可以正常插入数据,求教[2.0]

评论 抢沙发

登录

找回密码

注册