关于Drupal webforms的另一个问题 - 表单本身由 /includes/form.inc 的
构建 function theme_form_element($element, $value)
并在$ output中添加<label>
元素。我想只为一个webform删除该标签,所以我必须覆盖该功能。
如何只为一个webform覆盖它,而在其他所有webform中保留它相同?
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;
这是可能的吗?if条件是什么?
答案 0 :(得分:6)
如果您只想删除标签,还可以使用hook_form_alter(),并检查$ form_id是否与相关的网络表单相同。 id的格式为:webform_client_form_N,其中N是webform的节点ID。
一旦您在正确的表单上操作,您可以使用例如以下代码取消设置标签:
unset($form['submitted']['first_name']['#title']);
这将取消设置名为first_name的字段的标签。
答案 1 :(得分:1)
我确实需要做一个hook_form_alter,但标签本身在['submitted']元素中。 这是代码
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 work(+1给你!),但这是另一种情况。
答案 2 :(得分:0)
我不会取消设置表单元素标题。当您的表单由主题引擎呈现时,您可能会得到意外的结果。
您可以采用以下几种方式:
使用'#theme' => 'my_callback'
将每个元素或整个表单作为主题。
您还可以使用使用相应主题钩子的hook_elements创建自己的表单元素。
请参阅:
http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html