Связанные формы в Drupal 7: visible и более сложный пример

В прошлой заметке я привел пример использования #states и одного из его свойств, если так можно выразиться, которое называется enabled. Сегодня рассмотрим вариант с динамическим появлением элементов формы по мере заполения оных. Обратите внимание, что здесь не используется никакого AJAX.

<?php
function druwebru_reg($form, &$form_state) {
    $form['name'] = array(
        '#title' => 'Имя',
        '#type' => 'textfield',
    );
    
    $form['patronymic'] = array(
        '#title' => 'Отчество',
        '#type' => 'textfield',
        '#states' => array(
            'visible' => array(
                'input[name="name"]' => array('filled' => TRUE),
            )
        ),
    ); 
    
    $form['surname'] = array(
        '#title' => 'Фамилия',
        '#type' => 'textfield',
        '#states' => array(
            'visible' => array(
                'input[name="name"]' => array('filled' => TRUE),
                'input[name="patronymic"]' => array('filled' => TRUE),
            )
        ),
    ); 
    
    $form['actions'] = array('#type' => 'actions');
    $form['actions']['add_site'] = array(
        '#type' => 'submit',
        '#value' => 'Продожить работу с сайтом',
        '#states' => array(
            'visible' => array(
                'input[name="name"]' => array('filled' => TRUE),
                'input[name="patronymic"]' => array('filled' => TRUE),
                'input[name="surname"]' => array('filled' => TRUE),
            )
        ),
    );
    return $form;
}
?>

Ключевые участки программного кода имеют выделение серым цветом. Новые поля появляются по мере того, как пользователь их заполняет: имя, отчество, фамилия и наконец сама кнопка запуска обработки данных.

Drupal 7 #states visible

За логику поведения отвечает все тот же #states только вместо enabled у нас с вами теперь используется visible. Все относительно просто.





© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.