0

我正在尝试从我尝试使用主题自定义的多步表单中删除讨厌的 div。问题是它抛弃了我的CSS。我不愿意在不知道这个 div 存在的正当理由的情况下更改我所有的 CSS 规则。

对于我所有其他主题形式,奇怪的是,这个 div 没有出现。唯一显着的区别是这种形式是多步的。我正在使用基于此处示例的代码。我在下面发布了一些代码。

function theme_mymodule_add_child_wizard($variables)
{
    $form = $variables['form'];
    $output .= '<div class="_'.$form['fname']['#ui_size'].'">';
$output .= drupal_render($form['fname']);
$output .= '</div>';

    $output .= drupal_render_children($form);
    return $output;
}

function hook_theme()
{
return array
(
    'mymodule_add_child_wizard' => array
    (
        'render element' => 'form'
    ),
);
}

我的目标是转换这个:

<form>//My Drupal 7 Form
    <div>//Pesky Div
        <input></input>//Form elements contained by Pesky Div
    </div>
</form>

进入这个:

<form>
        <input></input>//Form elements free from Pesky Div
</form>

仅出于测试目的,我尝试更改核心 form.inc 文件中的第 3842 行以强制删除 div,但它没有那样工作。我实际上不想更改任何核心文件,我宁愿找到一种方法在我的模块中覆盖它。

#Tried removing the <div> tag seen here. 
return '<form' . drupal_attributes($element['#attributes']) . '><div>' . $element['#children'] . '</div></form>';
4

3 回答 3

0

@SFox,您可以覆盖 template.php 中的函数 theme_form

检查API

于 2014-12-16T11:17:28.423 回答
0

尝试这个 :

http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#prefix

您可以设置元素的文本或标记。

请注意“另见#suffix ”。为元素添加后缀。

于 2013-02-12T09:09:59.470 回答
0

据我所知,我认为div自定义钩子或主题无法删除上述内容。您可以使用以下代码进行检查:

function your_module_form($form, &$form_state) {
    $form['#theme_wrappers'] = array(); // remove both <form> and <div> inside
}

function your_module_form($form, &$form_state) {
    $form['#theme_wrappers'] = array('form'); // we want to render only <form> but <div> inside still there
}
于 2016-07-16T08:48:15.353 回答