PDA

View Full Version : اعتبارسنجی فیلدهایی که تو دیتابیس نیستن



armanb2013
پنج شنبه 28 فروردین 1393, 11:16 صبح
سلام ، وقتی که بخواهیم یک فرم رو اعتبارسنجی کنیم میاییم تو مدل اش و متد rules رو اصلاح می کنیم .
حالا من یک فرم دارم که خودم ساختمش و مثلا یک dropdown داره ، که می خوام فقط محدوده ی خاصی رو از کاربر دریافت کنه دقیقا مثل نمونه ای که تو فیلم آموزشی ساختید ولی با این تفاوت که اون فیلد یا dropdown تو مدل (کلا جداول دیتابیس) وجود نداره .
حالا سوالم اینه که این validation رو کجا باید اعمال کنم تو همون متد rules مدل یا نه ؟؟

MMSHFE
جمعه 29 فروردین 1393, 03:29 صبح
بله همونجا میگذارین و نوع ولیدیشن رو range میگذارین و پارامتر سوم، آرایه خودتون رو مینویسید (مقادیر مجاز). درصورت تمایل میتونید اینطوری کار کنید:

public function rules() {
return array(
...
array('yourDropDown', 'range', array(1,2,3), 'on'=>'yourForm'),
...
);
}
و حالا توی اکشن خودتون که کار پردازش فرم رو انجام میده چنین کاری انجام میدین (مدل فرضاً User انتخاب شده) :

$model = new User;
$model->scenario = 'yourForm';
...
اینطوری فقط اون ولیدیشن وقتی اعمال میشه که سناریوی yourForm رو انتخاب کنید (مثلاً برای create و... انتخاب نمیشه).