#drupal #drupal-7
#drupal #drupal-7
Вопрос:
У меня возникли проблемы при попытке изменить способ отображения моей формы. Тем не менее, я попытался сохранить ее такой же простой, как в найденном мной руководстве, но даже несмотря на то, что мой элемент $form в template.php функция hrfrontpage_form_alter имеет добавленную оболочку div — она не будет ее отображать. Почему?
В моем модуле:
function rsearch_block_info()
{
$blocks['rsearch_form'] = array(
'info' => t('Search Recruiters Front'),
);
return $blocks;
}
function rsearch_block_view($delta = '')
{
$block = array();
switch($delta) {
case 'rsearch_form' :
$block['content'] = drupal_get_form('rsearch_front');
break;
}
return $block;
}
В моем template.php:
function hrfrontpage_form_alter(amp;$form, amp;$form_state, $form_id) {
switch($form_id) {
case 'rsearch_front' :
$form['divstart'] = array(
'#value' => '<div style="background-color:green;">',
'#weight' => -5
);
$form['divend'] = array(
'#value' => '</div>',
'#weight' => 5
);
break;
}
}
Ответ №1:
Хорошо, прежде всего, вы не можете открыть div в одном элементе формы, а затем закрыть его в другом, потому что каждый элемент формы по умолчанию заключен в div.
Что вам нужно сделать, так это использовать элементы '#prefix' and '#suffix'
поля.
Если вы пытаетесь поместить оболочку div вокруг нескольких полей, вам нужно поместить эти поля в набор полей и использовать элементы префикса и суффикса в наборе полей.
Простой случай:
$form['my_field'] = array(
'#type' => 'textfield',
'#title' => 'search',
'#prefix' => '<div style="background-color:green;">',
'#suffix' => '</div>',
);
Сложный случай:
unset($form['my_element']);
$form['my_wrapper'] = array(
'#type' => 'fieldset',
'#prefix' => '<div style="background-color:green;">',
'#suffix' => '</div>',
);
$form['my_wrapper']['my_field'] = array( //Make sure your fields are children of the wrapper element!
'#type' => 'textfield',
'#title' => 'search',
);
$form['my_wrapper']['my_submit'] = array( //Make sure your fields are children of the wrapper element!
'#type' => 'submit',
'#value' => 'submit',
);
Ознакомьтесь с API формы:
https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7