PDA

View Full Version : ارسال پارامتر به custom validator



desatir7316
یک شنبه 03 اسفند 1393, 14:39 عصر
سلام
فرض کنید ما کد زیر رو توی yii2 داریم:


use yii\base\Model;

class MyForm extends Model
{
public $country;
public $token;

public function rules()
{
return [
// an inline validator defined as the model method validateCountry()
['country', 'validateCountry'],

// an inline validator defined as an anonymous function
['token', function ($attribute, $params) {
if (!ctype_alnum($this->$attribute)) {
$this->addError($attribute, 'The token must contain letters or digits.');
}
}],
];
}

public function validateCountry($attribute, $params)
{
if (!in_array($this->$attribute, ['USA', 'Web'])) {
$this->addError($attribute, 'The country must be either "USA" or "Web".');
}
}
}


چظوری می تونم به validateCountry پارامتر بفرستم؟

mr.nice
یک شنبه 03 اسفند 1393, 15:48 عصر
$model = new MyForm;
$model->validateCountry($foo,$bar)


مطمئن نیستم
البته name space هم باید اضافه شه به کنترلر

desatir7316
یک شنبه 03 اسفند 1393, 22:05 عصر
$model = new MyForm;
$model->validateCountry($foo,$bar)


مطمئن نیستم
البته name space هم باید اضافه شه به کنترلر


مرسی ولی منظوری توی مدل بود. من می خوام یه ولیدیتور داشته باشم که بتونم برای فیلدهای مختلف ازش با پارامترهای مختلف استفاده کنم.

MMSHFE
دوشنبه 04 اسفند 1393, 08:08 صبح
مثال:

use yii\base\Model;

class MyForm extends Model
{
public $country;
public $token;

public function rules()
{
return [
// an inline validator defined as the model method validateCountry()
['country', 'validateCountry', 'countries'=>['USA', 'Web']],

// an inline validator defined as an anonymous function
['token', function ($attribute, $params) {
if (!ctype_alnum($this->$attribute)) {
$this->addError($attribute, 'The token must contain letters or digits.');
}
}],
];
}

public function validateCountry($attribute, $params)
{
if (!in_array($this->$attribute, $params['countries'])) {
$this->addError($attribute, 'The country must be "' . implode('" or "', $params['countries']) . ".');
}
}
}