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