$model->validate() 总是 return false
$model->validate() always return false
我阅读了这个问题的类似主题,但我没有发现 solution.I 有一个通过 ajax 加载的表单。当所有数据都有效时,它们不会保存在数据库中并向我显示 console.in 我的用户模型中的验证错误 I **set return parent::beforeSave(); in beforeSave method
** 这是我的操作:
public function actionRegister()
{
$model = new RegistrationForm;
if(isset($_POST['ajax']) && $_POST['ajax']==='register-form')
{
$this->ajaxValidate($model);
}
if(isset($_POST['RegistrationForm']))
{
if($model->validate())
{
$model->attributes = $_POST['RegistrationForm'];
$user = new User;
$user->attributes = $model->attributes;
if($user->save())
echo 1;
}else{
$errors = $model->getErrors();
var_dump($errors);
exit;
}
}
$this->renderPartial('register', array('model' => $model),false,true);
public function ajaxValidate($model)
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
我刚动
$model->attributes = $_POST['RegistrationForm']
并设置在
之前
if($model->validate())
您调用了 $model->validate()
,但没有为 class RegistrationForm
的属性设置任何值。
validate
是这样工作的:
您有一个 class RegistrationForm
和一个必需的属性 fooField
。
class RegistrationForm extends \CModel
{
public $fooField;
public function rules()
{
return [
['fooField', 'required']
];
}
}
当另一个 class 调用 RegistrationForm 时,假设 Bar
:
class Bar
{
public function actionRegister()
{
$form = new RegistrationForm();
$form->validate(); // This will return false since `RegistrationForm->fooField` is required.
$form->fooField = 'Some value';
$form->validate(); // This will return true since `RegistrationForm->fooField` has a value.
}
}
您尚未设置模型的属性并尝试进行验证。
将其更正为,在验证之前设置属性:-
$model->attributes = $_POST['RegistrationForm'];
在之前使用上面的语句:-
if($model->validate())
我阅读了这个问题的类似主题,但我没有发现 solution.I 有一个通过 ajax 加载的表单。当所有数据都有效时,它们不会保存在数据库中并向我显示 console.in 我的用户模型中的验证错误 I **set return parent::beforeSave(); in beforeSave method
** 这是我的操作:
public function actionRegister()
{
$model = new RegistrationForm;
if(isset($_POST['ajax']) && $_POST['ajax']==='register-form')
{
$this->ajaxValidate($model);
}
if(isset($_POST['RegistrationForm']))
{
if($model->validate())
{
$model->attributes = $_POST['RegistrationForm'];
$user = new User;
$user->attributes = $model->attributes;
if($user->save())
echo 1;
}else{
$errors = $model->getErrors();
var_dump($errors);
exit;
}
}
$this->renderPartial('register', array('model' => $model),false,true);
public function ajaxValidate($model)
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
我刚动
$model->attributes = $_POST['RegistrationForm']
并设置在
之前if($model->validate())
您调用了 $model->validate()
,但没有为 class RegistrationForm
的属性设置任何值。
validate
是这样工作的:
您有一个 class RegistrationForm
和一个必需的属性 fooField
。
class RegistrationForm extends \CModel
{
public $fooField;
public function rules()
{
return [
['fooField', 'required']
];
}
}
当另一个 class 调用 RegistrationForm 时,假设 Bar
:
class Bar
{
public function actionRegister()
{
$form = new RegistrationForm();
$form->validate(); // This will return false since `RegistrationForm->fooField` is required.
$form->fooField = 'Some value';
$form->validate(); // This will return true since `RegistrationForm->fooField` has a value.
}
}
您尚未设置模型的属性并尝试进行验证。 将其更正为,在验证之前设置属性:-
$model->attributes = $_POST['RegistrationForm'];
在之前使用上面的语句:-
if($model->validate())