Как сделать обязательным/необязательным для заполнения одно поле в зависимости от значения другого после отправки формы

Аватар пользователя engenes engenes 31 мая 2017 в 13:41

Форма регистрации
Ниже пример кода, который делает первое поле необязательным для заполнения в самой форме


<?php
    
function мой_модуль_form_alter(&$form, &$form_state$form_id){
    
$form['field_website']['und'][0]['#required'] = FALSE;
    
//вот так поле становится необязательным для заполненияв самой форме
    
}
?>
<?php
$form
['test']['und'][0]['value']=test;
?>

Но мне нужно чтобы после отправки формы происходила проверка содержимого в другом поле, и если оно совпадает с нужным значением "test", то первое поле становилось необязательным.

<?php
if($form['test']['und'][0]['value']=='test'){
    
$form['field_website']['und'][0]['#required'] = FALSE;
}
?>

пробовал использовать function form_submit но даже не знаю то это или не то, но на отправку формы она не повлияла.

ВложениеРазмер
Иконка изображения snimok.jpg22.5 КБ
Иконка изображения snimok2.jpg17.03 КБ

Комментарии

Аватар пользователя engenes engenes 1 июня 2017 в 8:10

Вот такой вариант пробовал но без результатов


<?php
function addreg_form_alter(&$form, &$form_state$form_id) {
  if (isset(
$form_state['input']['field_typprofile']['und'][0]['value'])) {
    
$form['field_website']['und'][0]['value']['#required'] = FALSE;
  }
  
$form['#validate'][]='validate';
}

function 

validate(&$form, &$form_state) {
  if (isset(
$form_state['input']['field_typprofile']['und'][0]['value'])) {
    
$form['field_website']['und'][0]['value']['#required'] = FALSE;
  }
 
// form_set_error('title', '<pre>'.print_r($form['field']['field_typprofile'], true).'<pre>');
}
?>
Аватар пользователя BatKor BatKor 3 июня 2017 в 8:13

Примерно "вот так вот" добавляем валидацию.

<?php
function addreg_form_alter(&$form, &$form_state$form_id) {
  if (isset(
$form_state['input']['field_typprofile']['und'][0]['value'])) {
    
$form['field_website']['und'][0]['value']['#required'] = FALSE;
  }
  
$form['#validate'][]='addreg_form_validate';
}

function 

addreg_form_validate(&$form, &$form_state) {
 if(
$form_state['values']['test']=='test'){
    
form_set_error('test][''Что вы ввели?');
 }
}
?>