ارسال پارامتر به custom validator
سلام
فرض کنید ما کد زیر رو توی 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 پارامتر بفرستم؟
نقل قول: ارسال پارامتر به custom validator
$model = new MyForm;
$model->validateCountry($foo,$bar)
مطمئن نیستم
البته name space هم باید اضافه شه به کنترلر
نقل قول: ارسال پارامتر به custom validator
نقل قول:
نوشته شده توسط
mr.nice
$model = new MyForm;
$model->validateCountry($foo,$bar)
مطمئن نیستم
البته name space هم باید اضافه شه به کنترلر
مرسی ولی منظوری توی مدل بود. من می خوام یه ولیدیتور داشته باشم که بتونم برای فیلدهای مختلف ازش با پارامترهای مختلف استفاده کنم.
نقل قول: ارسال پارامتر به custom validator
مثال:
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']) . ".');
}
}
}