Есть модель формы.
В ней есть атрибут sum (число)
В правилах валидации нужно сравнить введенное число с атрибутом(числом) другой несвязанной модели.
Как это сделать правильно?
Compare validator с атрибутом другой модели
-
- Сообщения: 203
- Зарегистрирован: 2014.02.16, 03:09
-
- Сообщения: 203
- Зарегистрирован: 2014.02.16, 03:09
-
- Сообщения: 203
- Зарегистрирован: 2014.02.16, 03:09
Re: Compare validator с атрибутом другой модели
Делал как то так:
Всегда выдает фальш, и когда сумма больше, и когда меньше
В js добавляет такое правило
Я так понимаю он хочет сравнивать значения инпутов в форме, но в форме мне вообще не нужен compareAttribute, хотелось чтобы он сразу сравнивал sum с числом а не атрибутом...
Правильно я вообще делаю? хелп
Код: Выделить всё
//модель формы
class SumForm extends Model
{
public $pointsToCompare;
public function init()
{
$this->pointsToCompare = someGetPointsToCompare();
parent::init();
}
public function rules()
{
return [
['sum], 'required', 'message' => 'Необходимо заполнить поле "{attribute}"' ],
['sum', 'compare', 'compareAttribute' => 'pointsToCompare', 'operator' => '>=', 'type' => 'number', 'message' => 'Не хватает очков'],
];
}
}
В js добавляет такое правило
Код: Выделить всё
yii.validation.compare(value, messages, {"operator":">=","type":"number","compareAttribute":"pointsToCompare","skipOnEmpty":1,"message":"Не хватает очков"}, $form);
Правильно я вообще делаю? хелп
-
- Сообщения: 203
- Зарегистрирован: 2014.02.16, 03:09
Re: Compare validator с атрибутом другой модели
А все, пока писал вопрос проникся и нашел 'compareValue'
Но если есть какие то советы с удовольствием послушаю
Но если есть какие то советы с удовольствием послушаю
Re: Compare validator с атрибутом другой модели
Код: Выделить всё
public function rules()
{
return [
['sum', 'required', 'message' => 'Необходимо заполнить поле "{attribute}"' ],
['sum', 'superCompare'],
];
}
public function superCompare($attribute)
{
if ($this->$attribute != someGetPointsToCompare()) {
$this->addError($attribute, Yii::t('frontend', 'Not Equal.'));
}
}
-
- Сообщения: 203
- Зарегистрирован: 2014.02.16, 03:09
Re: Compare validator с атрибутом другой модели
andku83
Но так и для клиентской надо вручную писать js, правильно?
Но так и для клиентской надо вручную писать js, правильно?
Re: Compare validator с атрибутом другой модели
да, но в someGetPointsToCompare() у вас может быть логика которая каждую секунду меняется, тогда клиентская вам вообще не нужна.