drupal 7 ajax select и required radios

Аватар пользователя kv4

Добрый день!
Помогите решить задачу.

Есть тип материала - car.
Содержит поля:
Марка автомобиля - make; type=select; Обязательное поле.
Модель автомобиля - model; type=select; Обязательное поле.
Статус - status; type=radios; Обязательное поле.

Прикручиваю ajax к выбору марки:

<?php$form['field_car_make']['und']['#ajax'] = array(
      'callback' => 'car_make_changed',
      'wrapper' => 'field_car_data_wrapper',
      'progress' => array(
          'type' => 'throbber',
          'message' => ' '
      ),
  );?>

И вот при изменении марки, возникает ошибка 'Сделан недопустимый выбор... блаблабла' - ругается на поле status, потому, что не выбрано значение в этом поле.
При изменении поля make, список моделей должен обновиться соответствующими выбранной марке. Вот если делаю поле status необязательным для заполнения, то всё нормально срабатывает.

При этом, все поля обязательные, но на поле модели друпал не ругается (на то, что оно не заполнено). а именно на чекбоксы ругается.

Вопрос собственно, как управлять валидацией формы при ajax вызовах?

Помогите!!! )))

Ключевые слова:
Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя 10t0ns
10t0ns 5 лет назад

Как вариант, в настройках поля указать дефолтное значение.

Аватар пользователя kv4
kv4 5 лет назад
10t0ns написал:
Как вариант, в настройках поля указать дефолтное значение.

Нельзя дефолтное. Ну, конечно можно, но не желательно. Поле-то обязательное, а значит пользователь должен не забыть указать в нём значение, а если установить какое-то дефолтное, тогда пользователь может забыть что-то указать, и система не напомнит. А устанавливать всякие там проверки на дефолтные значения - это мне не кажется правильным...

Однако, сейчас я решил проблему с этой валидацией при помощи вот такого костыля:
Добавил свой валидатор формы:

<?php
$form
['#validate'][] = 'car_node_form_validate';
?>

В котором просто чищу ошибки, которые обнаружил другой валидатор (родной так-сказать)

<?php 
function car_node_form_validate(&$form, &$form_state) {
  ...
  
drupal_get_messages();
  
form_clear_error();
  ...
}
?>

Конечно это какое-то ущербное решение, но оно работает. В коде ещё опущена проверка на то, кто является генератором отправки формы, если это кнопка submit, то ошибки не чистятся, тогда вроде как всё по правилам работает.