View Full Version : اعتبار سنجی داینامیک
  
amdvbgmail
شنبه 12 مهر 1393, 09:50 صبح
با سلام
من میخوام توی مدلم یه اعتبار سنجی به شکل زیر انجام بدم 
که داخل مدل یه تابع بنویسم که مقدار فیلد جاری رو دریافت کنه و یه سری عملیات انجام بده نهایتا تابع رو داخل قسمت رول قرار بدم به شکل زیر
array('m_number', 'compare','operator'=>'<=','compareValue'=>  $this->capa($this->attributes['m_number'])),
الان کد بالا کار نمیکنه درواقع میخوام نحوه استفاده از فیلد رکورد جاری رو بدست بیارم و به عنوان ورودی بدمش به تابع capa() ! ولی هرکاری میکنم جواب نمیده
لطفا اگه کسی میدونه کمکم کنه 
مرسی
MMSHFE
شنبه 12 مهر 1393, 10:00 صبح
اینطوری تست کنید ببینید جواب میده:
array('m_number', 'compare','operator'=>'<=','compareValue'=>$this->capa()),
کد متد capa :
public function capa()
{
    // access to m_number via $this->m_number
}
amdvbgmail
شنبه 12 مهر 1393, 10:25 صبح
ممنون از پاسختون جناب شهرکی
اینو امتحان کردم اما باز کار نکرد در واقع فک کنم مقدار رو دریافت نمیکنه
Veteran
شنبه 12 مهر 1393, 10:28 صبح
مشکل چیه ؟ دقیقا میخواید چیکار کنید ؟
amdvbgmail
شنبه 12 مهر 1393, 10:34 صبح
من میخوام توی فایل مدل به مقدار فیلدی که کاربر نوشته دسترسی پیدا کنم و براساس اون فیلد های بعدی رو ولیدیت کنم
Veteran
شنبه 12 مهر 1393, 10:43 صبح
public function beforeValidate(){
     echo CVarDumper::dump($this->attributes,10,true);
     Yii::app()->end();
    }
توی مدل مربوطه قرار بدید ببینید خروجی چی هستش ؟ و یک مثال از کاری رو که میخواید رو هم مطرح کنید ببینیم چیکار میشه کرد.
amdvbgmail
شنبه 12 مهر 1393, 10:51 صبح
خروجی یه آرایه از فیلدهای مدل به همراه مقادیر اون ها هستش ،
amdvbgmail
شنبه 12 مهر 1393, 10:56 صبح
نمیدونم چه جوری توضیح بدم یه مثال ساده بگم..
کاربر وارد فرم جاری میشه و میخواد 2 تا فیلد رو پر کنه فیلد اول رو مثلا 1 وارد میکنه و طبق مقدار این فیلد اول ، فیلد دوم ولیدیت بشه یعنی مقدار توی مدل گرفته بشه و داخل یه تابع قرار بدیم و اون تابع بررسی میکنه و یه مقدار برمیگردونه و با اون مقدار ولیدت بشه فیلد دوم!
rezaonline.net
شنبه 12 مهر 1393, 14:34 عصر
public $val1 , $val2;
function rules()
{
    return array(
        array('val1,val2','checkVal'),
    );
}
function checkVal($att,$val)
{
    if($this->val1 > $this->val2)
    {
        $this->addError('val1','val1 بزرگتر هست');
        $this->addError('val2','val1 بزرگتر هست');
    }
}
amdvbgmail
شنبه 12 مهر 1393, 14:51 عصر
ممنون رضا جان..
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.