$model->validate() всегда возвращает false
Я читал похожие темы этой проблемы, но я не нашел решения. У меня есть форма, которая загружается через 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();
}
3 ответа
Я просто двигаюсь
$model->attributes = $_POST['RegistrationForm']
и установить перед
if($model->validate())
Вы не установили атрибуты модели и пытаетесь выполнить проверку. исправить это как, установить атрибуты до проверки с помощью:-
$model->attributes = $_POST['RegistrationForm'];
используйте вышеупомянутое утверждение перед:-
if($model->validate())
Вы назвали $model->validate()
без установки каких-либо значений атрибутов class RegistrationForm
,
validate
работает так:
У вас есть класс RegistrationForm
и обязательный атрибут fooField
,
class RegistrationForm extends \CModel
{
public $fooField;
public function rules()
{
return [
['fooField', 'required']
];
}
}
Когда 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.
}
}