我想构建一个模块,在搜索表单块配置页面上添加一个额外的字段来存储将显示为 HTML5 占位符属性的文本。我需要使用哪些钩子?如何仅修改搜索表单块以使额外的 texbox 打印在页面上?
问问题
2597 次
2 回答
2
这是最终工作的代码,感谢您的帮助:
function yourmodule_form_alter(&$form, &$form_state, $form_id) {
if (($form_id == 'block_admin_configure') && ($form['module']['#value'] == 'search')) {
$form['settings']['theplaceholder'] = array(
'#type' => 'textfield',
'#title' => t('Add placeholder text'),
'#default_value' => variable_get('theplaceholder'),
'#maxlength' => 64,
'#description' => 'Override the default placeholder',
'#weight' => 2,
'#access' => TRUE,
);
$form['#submit'][] = 'yourmodule_submit_function';
}
if ($form_id == 'search_block_form') {
$form['search_block_form']['#attributes']['placeholder'] = variable_get('theplaceholder');
}
}
function yourmodule_submit_function($delta = '', $edit = array()){
variable_set('theplaceholder', $edit['values']['theplaceholder']);
}
于 2012-06-21T19:41:56.480 回答
1
您可以使用以下挂钩来修改任何形式:
function MODULE_NAME_form_FORM_ID_alter(&$form, &$form_state, $form_id) {
}
插入您自己的模块名称和您要更改的表单的表单 ID。在您的情况下,它只是块的 search-form 或 search-block-form 。通过查看页面的 html 源代码并从元素中获取 id,找出您尝试更改的表单的 id。
无论如何,一旦你确定了要插入的正确 id,就开始向表单添加元素:
function MODULE_NAME_form_FORM_ID_alter(&$form, &$form_state, $form_id) {
$form['my_new_field'] = array(
'#type' => 'item',
'#markup' => t('Just testing'),
'#weight' => 10,
);
}
加载表单以确保您的新标签、字段或任何内容都显示出来。
这对你有用吗?
关于这个函数的更多文档在这里:http ://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_form_FORM_ID_alter/7
于 2012-06-19T18:00:04.090 回答