t-alexashka
@t-alexashka
Сразу пишу legacy код

Как проверить валидацию массива input'ов?

Есть форма product, и у каждого продукта цена для разных магазинов разная (bids). форму создаю так:

<? 
	$shops = Shops::find()->all();
	foreach($shops as $shop)
	{
		echo "<tr><td>{$shop->login}</td><td>" . $form->field($form, 'bids[' . $shop->id . ']')->textInput()->label(false) . "</td></tr>";
	}
?>


а в модели проверяю так:
['bids', 'each', 'rule' => ['integer', 'min' => '0']],


И все хорошо, кроме того что на фронте если ввести неправильное значение (например "-50") то валидация не проходит, но визуально поле зеленое (has-success), т.к. валидатор возвращает такой текст:
{"form-bids":["Значение «Ставки» должно быть не меньше 0."]}

и соответственно обработчик yiiform не может понять какое именно поле из неправильных нужно подкрасить.

Как решить проблему с валидацией массива инпутов?
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 1
OKyJIucT
@OKyJIucT
Sunshine reggae
Не давайте на фронте вводить отрицательные числа, используйте regex для валидации данных браузером

$form->field($form, 'bids[' . $shop->id . ']')->textInput(['pattern' => '[1-9]\d*'])->label(false)

Ну а если негодник все таки обошел это - подсвечивайте весь блок инпутов, а не конкретный с ошибкой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы