将DIV包装器添加到Drupal中的自定义搜索表单 - 7已添加但未呈现

时间:2014-06-19 18:56:43

标签: drupal drupal-7

我在尝试更改表单呈现方式时遇到问题。但是,我试图保持它的简单性,因为我发现的教程保留了它 - 但即使我在template.php的hrfrontpage_form_alter函数中的$ form项目具有添加了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(&$form, &$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 个答案:

答案 0 :(得分: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