Здравствуйте.
Есть форма, в ней все елементы обернуты в div.
Вопрос в следующем, как задать клас или ID этому div?
Еще в форме есть филдсеты, как можно отключить их отображение программно?
Это я знаю, знаю как создать свои поля. Но не знаю как изменить существующие филдсеты (отключить отображение) и как создать/изменить общий контейнер для всей формы
[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 )
.... )
... )
Нужно скрыть эту часть, но так чтобы поля внутри филдсета остались.
Комментарии
hook_form_alter
Это я знаю, знаю как создать свои поля. Но не знаю как изменить существующие филдсеты (отключить отображение) и как создать/изменить общий контейнер для всей формы
в массиве $form хука form_alter содержатся элементы формы. Убрать можно например с помощью:
unset($form['name']);
Контейнер для формы вы можете задать так:
$form['#prefix'] = '<div class="my-class">';
$form['#suffix'] = '</div>';
Спасибо, с контейнером получилось. Думал префиксы/суфиксы можно только отдельным елементам приписывать.
Ниже результат вывода масива $form.
(
[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] => Информация профиля
...
Так как Вы написали не получается, или что-то не так делаю. Помогите еще с этим пожалуйста.
хм вам надо отрисовать поля из account но не нужен fieldset?
тогда вам нужен теминг формы, используете hook_theme.
$themes = array();
$themes['form_id'] = array(
'arguments' => array(
'form' => NULL,
),
'path' => 'путь до шаблона',
'template' => 'your-template'
);
return $themes;
}
в шаблоне который определили в хуке, по отдельности рисуете элементы так:
<?php print drupal_render($form['account']['mail']); ?>
и так далее
Спасибо.
Жаль что никак проще нельзя
там все просто. И это не какое то ухищрение, на Drupal так и надо темизировать. Заодно узнаешь новое