Drupal的 - 网络表单元素主题化
-
22-09-2019 - |
题
约Drupal的另一个问题web表单 - 形式本身是建立在通过 /includes/form.inc 的
<强> function theme_form_element($element, $value)
强>
和增加了一个<label>
元件到$输出。我想删除该标签只为一个网页表单,所以我必须重写功能。
我怎么可以重写它只有一个网页表单,同时保持它同所有其他人呢?
E.g。
if ($block == 'contact'):
// only output <input> form element stored in $value
function mytheme_html_form_element($element, $value) {
$t = get_t();
$output .= " $value\n";
return $output;
}
endif;
这是可能的,并且在发生什么如果条件?
解决方案 2
我也有做了hook_form_alter,但标签本身是在[“提交”]元素。 这里是代码
if($form_id == 'webform_client_form_18') {
$form['submitted']['#children'] = '
<input
type="text"
maxlength="128"
name="submitted[email]"
id="edit-submitted-email"
value="' . $form['submitted']['email']['#default_value']. '"
class="form-text required"
/>
';
}
以不同的形式,去掉#title工作(+1你!),但是这是一个不同的情况。
其他提示
如果你只是希望移除的标签,你也可以使用 hook_form_alter( ),并检查$ form_id等于有问题的网络表单。的ID将是以下形式:。webform_client_form_N其中N是网络表单的节点ID
一旦你合适的形式对操作,则可以使用取消设置的标签,例如,这样的代码:
unset($form['submitted']['first_name']['#title']);
这将取消设置为字段称为first_name的标签。
我不会取消设置形式元件标题。当你的形式得到由主题引擎进行渲染,你可以得到意想不到的结果。
您可以做几种方式:
主题的每个元素或整体形式与'#theme' => 'my_callback'
。
您还可以创建使用hook_elements使用相应的主题钩子自己的表单元素。
请参阅:
http://api.drupal.org/api /drupal/developer--topics--forms_api_reference.html
不隶属于 StackOverflow