[ РЕШЕНО ] Контейнер для формы

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

Аватар пользователя HSV HSV 12 января 2012 в 16:24

Здравствуйте.
Есть форма, в ней все елементы обернуты в div.
Вопрос в следующем, как задать клас или ID этому div?
Еще в форме есть филдсеты, как можно отключить их отображение программно?

Комментарии

Аватар пользователя HSV HSV 12 января 2012 в 17:49

Ch wrote:
hook_form_alter

Это я знаю, знаю как создать свои поля. Но не знаю как изменить существующие филдсеты (отключить отображение) и как создать/изменить общий контейнер для всей формы

Аватар пользователя ilyin.eugene ilyin.eugene 12 января 2012 в 18:51

в массиве $form хука form_alter содержатся элементы формы. Убрать можно например с помощью:

unset($form['name']);

Контейнер для формы вы можете задать так:

 
$form['#prefix'] = '<div class="my-class">';
$form['#suffix'] = '</div>';
Аватар пользователя HSV HSV 12 января 2012 в 22:17

ilyin.eugene wrote:
в массиве $form хука form_alter содержатся элементы формы. Убрать можно например с помощью:

unset($form['name']);

Контейнер для формы вы можете задать так:

 
$form['#prefix'] = '<div class="my-class">';
$form['#suffix'] = '</div>';

Спасибо, с контейнером получилось. Думал префиксы/суфиксы можно только отдельным елементам приписывать.

Ниже результат вывода масива $form.

Array
(
    [user_registration_help] => Array
        (
            [#value] =>
            [#weight] => -20
        )

    [account] => Array
        (
            [#type] => fieldset
            [#title] => Информация профиля
            [#weight] => -10
            [name] => Array
                (
                    [#type] => textfield
                    [#title] => Имя пользователя
                    [#default_value] =>
                    [#maxlength] => 60
                    [#description] => Пробелы разрешены; знаки пунктуации запрещены, за исключением точек, тире и знаков подчеркивания.
                    [#required] => 1
                )

            [mail] => Array
                (
                    [#type] => textfield
                    [#title] => Адрес электронной почты
                    [#default_value] =>
                    [#maxlength] => 64
                    [#description] => На указанный адрес будут отправляться письма с сайта. Почтовый адрес не будет доступен другим пользователям и используется для восстановления пароля, определённых вами оповещений и связи через контактную форму.
                    [#required] => 1
                )
                ....
          )
...
)

Нужно скрыть эту часть, но так чтобы поля внутри филдсета остались.

...
[account] => Array
        (
            [#type] => fieldset
            [#title] => Информация профиля
...

Так как Вы написали не получается, или что-то не так делаю. Помогите еще с этим пожалуйста.

Аватар пользователя ilyin.eugene ilyin.eugene 12 января 2012 в 22:52

хм вам надо отрисовать поля из account но не нужен fieldset?

тогда вам нужен теминг формы, используете hook_theme.

function your_module_theme() {
 
  $themes = array();

  $themes['form_id'] = array(
    'arguments' => array(
      'form'    => NULL,
    ),
    'path'      => 'путь до шаблона',
    'template'  => 'your-template'
  );
 
  return $themes;
}

в шаблоне который определили в хуке, по отдельности рисуете элементы так:

<?php print drupal_render($form['account']['name']); ?>
<?php print drupal_render($form['account']['mail']); ?>
и так далее