PDA

View Full Version : نمایش error در همان صفحه



under22
جمعه 16 اسفند 1392, 12:46 عصر
با سلام خدمت دوستان
من یک فرمی دارم که به صورت ajax ولیدیت میشه و اطلاعات رو هم به صورت ajax ارسال میکنه . من یک مشکل دارم اونم اینه که وقتی کاربر روی دکمه برای ارسال اطلاعات کلیک می کند و یک یا چند فیلد را خالی می گذارد که باید حتما آن ها رو پر کنه error های مربوط به ولیدیت مدل رو در یک صفحه دیگه نشون میده . من میخام اون error ها رو تو همین صفحه نشون بده باید چیکار کنم

SadeghPro19
جمعه 16 اسفند 1392, 14:04 عصر
لطفا کدهاتون رو بزارید تا بتونیم راهنمایی کنیم.

under22
جمعه 16 اسفند 1392, 21:21 عصر
منیشه همینطوری راهنماییم کنید بگید باید چیکار کنم آخه کد ها الآن در دسترس نیست .
یکی از دوستان بهم گفت باید مقدار برگشتی ajax رو به این صورت چاپ کنم .
echo CHtml::errorSummary($model);
من اینکارو کردم درست شد فقط یک مشکل داشته که فقط واسه ولیدیت کردن فایل آپلودی مشکل داشت یعنی error مربوطه رو در صفحه دیگه نشون میداد ولی واسه بقیه فیلد ها درست کار میکرد
میشه راه نماییم کنید

MMSHFE
جمعه 16 اسفند 1392, 21:42 عصر
دوست عزیز، فایل آپلود اوضاعش فرق میکنه چون خود Yii توی هسته از AJAX Upload پشتیبانی نمیکنه و باید از Extension مربوطه استفاده کنید. توی Extensionها جستجو کنید مورد زیاده براش.

under22
جمعه 16 اسفند 1392, 21:44 عصر
آپلود فایل به صورت ایجکس نیست .

MMSHFE
جمعه 16 اسفند 1392, 21:51 عصر
خوب وقتی فایل آپلود نشده، خطایی نشون نمیده توی همون صفحه و حتماً باید فرم Submit بشه تا خطاها ظاهر بشن دیگه. حدس میزنم منظورتون رو کامل متوجه نمیشم. لطفاً بیشتر توضیح بدین که منظورتون از اینکه خطا توی صفحه دیگه ظاهر میشه چیه.

under22
جمعه 16 اسفند 1392, 21:56 عصر
منم خیلی بد توضیح دادم.
ببنید این فرم رو فراموش کنید . من میخام یه چیزی مثله حالت ویجد دیتاگیرید باشه که همه کارا رو به صورت ajaxi انجام بده .
من یک فرم ثبت نام داشتم که کاربر چند تا فیلد رو پر میکنه و اطلاعات رو به صورت ajax به کنترلر ارسال میکنه و ولیدیتور ها انجام میشه اگه مشکلی نداشه ثبت میشه . منتها من نمیدونم به داده برگشتی ajax چگونه بر خورد کنم که صفحه بدون رفرش به ایندکس فرستاده بشه

MMSHFE
جمعه 16 اسفند 1392, 22:18 عصر
ببینید، شما کار خاصی لازم نیست انجام بدین. کافیه توی اکشن مربوطه اینطوری کار کنید:


if(!$model->hasErrors() && $model->save()) {
...
}

خود Yii بطور خودکار اگه خطایی وجود داشته باشه، توی درخواستهای AJAX خطای موردنظر رو به مدل اضافه میکنه و درنتیجه hasErrors نتیجه true میده و شما هم با ! برعکس میکنید. درنتیجه قسمت اول شرط، false میشه و قسمت دوم هم بخاطر && اصلاً اجرا نمیشه و مدل ذخیره نمیشه.