не сохраняются введеные значения в полях взаимодействующих с Conditional Fields

Главные вкладки

Аватар пользователя Im Im 19 марта 2014 в 20:23

собственно сабж, при выборе из списка значения, появляется зависимое поле, любое введенное в него значение при сохранении не сохраняется(сорри за туфтологию). Как бороть? Было у кого?

Комментарии

Аватар пользователя Im Im 7 апреля 2014 в 19:49

"molp" wrote:
Та же проблема. Хелп!

я в итоге отказался от Conditional Fields, и сделал с помощью #state
тем более, что модуль делает то же самое, но он криво написанный.

Аватар пользователя SScrew SScrew 11 апреля 2014 в 11:37

То есть тупо пропадает? Или в редактировании формы оно есть, а при отображении нет? Если второе, тогда в настройках отображения сделайте его видимым. И да, модуль Conditional fields кривоват.

Аватар пользователя Im Im 11 апреля 2014 в 23:17

"SScrew" wrote:
То есть тупо пропадает?

ага
"SScrew" wrote:
Или в редактировании формы оно есть, а при отображении нет?

сначала есть - после сохранения нет, это как фокус с кроликом в шляпе
"SScrew" wrote:
Если второе, тогда в настройках отображения сделайте его видимым

не поле пропадает, а введенное в него значение
"SScrew" wrote:
И да, модуль Conditional fields кривоват.

да, соглашусь.

Аватар пользователя molp molp 14 апреля 2014 в 17:27

"Im" wrote:
я в итоге отказался от Conditional Fields, и сделал с помощью #state
тем более, что модуль делает то же самое, но он криво написанный.

У меня не получилось добиться результата. Подскажите что я делаю не так?
1. Создаю (Field UI) к примеру два поля field_1 и field_2
2. В файле template.php пишу:

        function form_name($form, &$form_state) {
                $form['field_1'] = array(
                  '#type' => 'checkbox',
                  '#title' => 'Lable 1'
                );
                 
                $form['field_2'] = array(
                  '#type' => 'select',
                  '#title' => 'Lable 2',
                  '#states' => array(
                        'visible' => array(
                          'input[name="field_1"]' => array('checked' => TRUE)
                        )
                  )
                );
               
                return $form;
        }
Аватар пользователя molp molp 14 апреля 2014 в 19:54

Нашел тему http://www.drupal.ru/node/104554
Пробую как описано в ней.

У меня поле field_2 - селект-лист, который должен отобразиться после того как отмечен чекбокс поля field_1

        function THEMENAME_form_FORMNAME_alter(&$form, &$form_state, $form_id) {
                $form['field_2']['#states']  = array(
                        'visible' => array(
                                'input[name="field_1[und]"]' => array('checked' => TRUE,),
                        ),
                );
        }

name="field_1[und]" беру из кода страницы. В коде у меня field_1[und][Название лэйбла по русски] но я пробовал в функции указывать оба варианта.
Всеровно сразу отображается два поля и при клике по field_1 не происходит никаких изменений.

Аватар пользователя Im Im 14 апреля 2014 в 20:35
<?php
function ИмяМодуля_form_alter(&$form, &$form_state$form_id){

    if(

$form_id == "ай_ди_формы"){ 

        

$form['field_которое_скрывается']['#states'] = array(
            
'invisible' => array(
                
'input[name="field_которое_влияет_на_скрытие"]' => array('checked' => TRUE)
            )
        );

    }
}

?>
Аватар пользователя molp molp 14 апреля 2014 в 21:22

Im wrote:

<?php
function ИмяМодуля_form_alter(&$form, &$form_state$form_id){

    if(

$form_id == "ай_ди_формы"){ 

        

$form['field_которое_скрывается']['#states'] = array(
            
'invisible' => array(
                
'input[name="field_которое_влияет_на_скрытие"]' => array('checked' => TRUE)
            )
        );

    }
}

?>

Непонятно только "ИмяМодуля". У меня поля созданы при помощи Field UI.

Аватар пользователя Im Im 14 апреля 2014 в 20:38

field_1[und][1] - указать выбранный чекбокс
и обратите внимание на

"Im" wrote:
['#states'] = array(
            'invisible' => array(

Аватар пользователя Im Im 14 апреля 2014 в 20:38

field_1[und][1] - указать выбранный чекбокс
и обратите внимание на

"Im" wrote:
['#states'] = array(
            'invisible' => array(

Аватар пользователя Im Im 14 апреля 2014 в 20:41

"molp" wrote:
function THEMENAME_form_FORMNAME_alter(&$form, &$form_state, $form_id) {
$form['field_2']['#states'] = array(
'invisible' => array(
'input[name="field_1[und][1]"]' => array('checked' => TRUE,),
),
);
}

как то так ваш варик должен быть

Аватар пользователя Im Im 14 апреля 2014 в 22:00

"molp" wrote:
Непонятно только "ИмяМодуля". У меня поля созданы при помощи Field UI.

вы пишете код в template.php в моем случае код в модуле

Аватар пользователя molp molp 14 апреля 2014 в 23:46

Im wrote:
"molp" wrote:
Непонятно только "ИмяМодуля". У меня поля созданы при помощи Field UI.

вы пишете код в template.php в моем случае код в модуле

Что то не получается. Объясните пожалуйста из каких составляющих формируется название функции?

Аватар пользователя Im Im 15 апреля 2014 в 12:09

"molp" wrote:
Что то не получается. Объясните пожалуйста из каких составляющих формируется название функции?

"molp" wrote:
function THEMENAME_form_FORMNAME_alter(&$form, &$form_state, $form_id) {
$form['field_2']['#states'] = array(
'visible' => array(
'input[name="field_1[und]"]' => array('checked' => TRUE,),
),
);
}

в вашем случае вы все правильно делаете, вызываете хук из template.php

в моем случае, это модуль с вызовом хука и дальнейшей проверкой id формы.

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

у вас из template.php вообще вызов функции идет? вы сбрасываете кеш, после манипуляций с template.php?

напишите для проверки в template.php(при условии включенного модуля Devel)

<?php
function THEMENAME_form_alter(&$form, &$form_state$form_id) {
dpm($form);
}
?>

сбросьте кеш, будет результат - значит вы на правильном пути.

p.s. THEMENAME - это имя вашей темы

Аватар пользователя molp molp 16 апреля 2014 в 1:17

Разобрался, спасибо.
Но пришлось записать именно field_1[und][Название лэйбла по русски]. По другому никак не заработало.

Аватар пользователя Im Im 16 апреля 2014 в 21:27

"molp" wrote:

Разобрался, спасибо.
Но пришлось записать именно field_1[und][Название лэйбла по русски]. По другому никак не заработало.

вот и чудненько