Хочу сделать, чтобы в форме оформления заказа в зависимости от галки в одном поле, другое становилось необязательным для заполнения.
написал следующее
<?php
function amkara_form_alter(&$form, &$form_state, $form_id){
$form['buttons']['continue']['#validate'][] = 'amkara_form_validate_requered';
}
function amkara_form_validate_requered(&$form, &$form_state){
//form_set_error('field_tel', 'Title cannot be "test"');
dpm($form);
dpm($form_state);
}
?>
<?php
function amkara_form_validate_requered(&$form, &$form_state){
//form_set_error('field_tel', 'Title cannot be "test"');
unset($form_state['complete form']['commerce_fieldgroup_pane__group_shipping']['field_house']['und']['#required']);
unset($form_state['complete form']['commerce_fieldgroup_pane__group_shipping']['field_house']['und'][0]['#required']);
unset($form_state['complete form']['commerce_fieldgroup_pane__group_shipping']['field_house']['und'][0]['value']['#required']);
unset($form_state['field']['#parents']['commerce_fieldgroup_pane__group_shipping']['#fields']['field_house']['und']['instance']['required']);
dpm($form_state);
}
?>
<?php
function amkara_form_validate_requered(&$form, &$form_state){
//form_set_error('field_tel', 'Title cannot be "test"');
$form_state['complete form']['commerce_fieldgroup_pane__group_shipping']['field_house']['und']['#required'] = false;
$form_state['complete form']['commerce_fieldgroup_pane__group_shipping']['field_house']['und'][0]['#required'] = false;
$form_state['complete form']['commerce_fieldgroup_pane__group_shipping']['field_house']['und'][0]['value']['#required'] = false;
$form_state['field']['#parents']['commerce_fieldgroup_pane__group_shipping']['#fields']['field_house']['und']['instance']['required'] = false;
dpm($form_state);
}
?>
то есть думаю, что надо именно в валидации писать условие
но при этом поля почему то являются обязательными для заполнения...
подскажите, что сделать, чтобы отменить обязательность заполнения этих полей
Комментарии
Conditional Fields
Целый модуль из за 4 полей?
все таки хочется понять как это сделать программно, для иметь больший контроль над этим
<?php
$form['your_field']['#required'] = TRUE;
?>
Ему же наоборот надо.
$form['your_field']['#required'] = TRUE * -1;
Точно)) Прочитал в заголовке отметить вместо отменить.
То есть в самой форме мы отменяем required, а где писать условие? при проверке формы выходит?
Алгоритм, выходит, такой: если у нас есть какой то условие в зависимости от которого поля должны становиться обязательными, то в любом случае в саму форму можно добавить и обычные поля, а потом во время проверки уже ставить или убирать required?
В общем вопрос я наверное так и решил, пока ждал ответ) снял со всех required через админку а потом при проверке уже написал условие
Ценный опыт, дороже быстрого ответа.
Если менять надо по условию, то нужно делать через states