View Full Version : enableAjaxValition کار نمی کنه ! yii2advanced
desatir7316
دوشنبه 18 اسفند 1393, 07:22 صبح
سلام دوستان
چندتا فیلد به مدل signup خود yii اضافه کردم و enableAjaxValidation هم برابر true قرار دادم ولی کار نمی کنه
چیز بیشتری باید توی کنترلر یا فرم اضافه کنم؟
<?php $form = ActiveForm::begin(['id' => 'form-signup', 'enableAjaxValidation' => true]); ?>
...
...
<?php ActiveForm::end(); ?>
MMSHFE
دوشنبه 18 اسفند 1393, 07:33 صبح
بله باید به کنترلر این کد رو اضافه کنید:
if(isset($_POST['ajax']) && $_POST['ajax'] === 'form-signup') {
echo ActiveForm::validate($model);
Yii::$app->end();
}
desatir7316
دوشنبه 18 اسفند 1393, 07:53 صبح
قبل از پست شما این رو دیدم: http://www.yiiframework.com/doc-2.0/guide-input-validation.html#ajax-validation
همه چیز درسته ولی توی inspect element ارور زیر رو میده:
500 Internal Server Error
فرمم رو به شکل زیر تغییر دادم:
<?php $form = ActiveForm::begin(['enableAjaxValidation' => true, 'id' => 'signup_form','options'=>['class' => 'form'] ,'action'=> \yii\helpers\Url::to(['site/signup'])]); ?>
اکشن :
$model = new SignupForm();
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
MMSHFE
دوشنبه 18 اسفند 1393, 08:28 صبح
در بیشتر مواقع توی Yii خطای 500 وقتی هست که خطایی توی کدتون سمت سرور وجود داره اما بعضی وقتها هم خطا ناشی از ارسال اطلاعات به آدرسی هست که توی سرور وجود نداره. توی فایرباگ چک کنید درخواست به کدوم صفحه ارسال میشه (توی سربرگ Net)
jafaripur
دوشنبه 18 اسفند 1393, 23:53 عصر
کد کل کنترل همراه با behaviors و filter هارو بذار، اینجوری نمی شه گفت.
یکی هم اگه قراره validation یا اطلاعات به همون کنترل فعالی فرستاده بشه این رو حذف کن:
'action'=> \yii\helpers\Url::to(['site/signup'])
یا از این طریق لینک دهید که absolute باشه:
'action'=> \yii\helpers\Url::to(['/site/signup'])
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.