我正在向搜索表单添加占位符:
$form['search_block_form']['#attributes']['placeholder'] = ' Search';
但问题是,drupal正在将&
符号打印为&
,因此在HTML输出中
对于占位符属性而不是:
placeholder=" Search"
我得到了:
placeholder=" Search"
如何防止此行为或是否有另一种方法来打印该字符的十六进制值?尝试使用:
[]
和decode_entities('')
以及其他一些功能,但都没有帮助。
答案 0 :(得分:1)
我认为你接近decode_entities(),但你可以尝试PHP函数html_entity_decode()。
但是,除非您尝试添加占位符的字段被称为' search_block_form',否则我认为这是您的构造错误。
如果你这样做是一个hook_form_alter()(如果你这样写它就应该是这样)并且你要添加占位符的字段叫做" my_text_field",那么函数应该这样寻找:
function custom_module_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'custom_form') {
$form['my_text_field']['#attributes']['placeholder'] = html_entity_decode(' Search');
}
}
请记住替换' custom_form'使用表单的真实ID和' my_text_field'用你想要改变的领域名称。
/ ****编辑**** /
最后明白你要做什么。为了在我的网站上工作,我不得不像这样放置我的表单项目:
$form['test'] = array(
'#type' => 'textfield',
'#attributes' => array(
'placeholder' => html_entity_decode(''),
'style' => array('font-family: Arial, FontAwesome;'),
),
);
要添加的重要内容是字体系列的样式属性,并确保它包含FontAwesome。 所以上面的例子将成为:
function custom_module_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'custom_form') {
$form['my_text_field']['#attributes']['placeholder'] = html_entity_decode(' Search');
$form['my_text_field']['#attributes']['style'] = 'font-family: Arial, FontAwesome;';
}
}
不确定你是如何为Font Awesome添加JS的,但是我在使用drupal_add_js()的页面中添加了它,以便我可以确保它只在所需的页面上加载。
让我知道这对您有何影响,并且不要忘记刷新您的缓存!