在开发Drupal网站的过程中,我们经常需要使用hook_form_alter(&$form, &$form_state, $form_id)或hook_form_Form_ID_alter(&$form, &$form_state)两个函数对Drupal的表单进行修改,以满足我们实际应用的需求。这2个函数有以下一些功能:
1、修改表单的labels、descriptions及其他属性
2、通过改变#weight改变元素在表单中的先后顺序
3、将一些元素用<div>或者<fieldset>包裹(wrapper)
4、隐藏或移除一些不必要的元素
5、为表单添加一些markup(标签)
6、为表单加上自己写的验证函数(例如加在第一个:array_unshift($form['#validate'], 'new_validate');)
6、等等等等等等
例如:下面这段语句就是将搜索表单的按键改成图形的,search_block_form就是这个搜索表单的Form ID(下面代码摘自老梁的mydrupal,老农【老农是antims的外号】稍微修改了一下)
1 2 3 4 5 6 7 | function 主题名_search_block_form_alter(& $form , & $form_state ) { $form [ 'search_block_form' ][ '#size' ] = 30; $form [ 'actions' ][ 'submit' ][ '#value' ] = t( 'Go' ); $form [ 'action' ][ 'submit' ][ '#type' ] = 'image_button' ; $form [ 'action' ][ 'submit' ][ '#src' ] = drupal_get_path( 'theme' , '主题名' ) . '/images/search.png' ; $form [ 'action' ][ 'submit' ][ '#attributes' ][ 'class' ][] = 'my-search-button' ; } |
从上面代码可以看出,修改一个Drupal表单,最重要的就是要知道它的Form ID。那么怎么才能快速查找它呢?
老农为您介绍最最方便的方法:
1、安装Firefox浏览器
2、安装web Developer插件
3、在表单页面点右键,选择Web Developer------>Form-------------->Display Form details(也可以点工具栏的Forms图标)
上图截自Drupal的官方网站,我们要查找的是首页搜索表单的ID,图最下面这个search_theme_form就是了,它存在于表单的隐藏域,如 果不登陆是看不到的哦。老农在此顺便说一下,Drupal是非常安全的CMF,符合美国军方标准(否则白宫和联合国也不会用它了),它的表单隐藏域有 form_build_id和form_token,其值是个哈希值,根据variable表里的drupal_private_key生成,此值具有唯 一性,确保是Druapl自己的表单,防止表单伪造,极大地提高了系统的安全性。
Firefox的Firebug和Web Developer是web开发者的好朋友,请一定要学会使用哦!
好文,我把它转到博客里面。
好文,我把它转到博客里面。
hook_form_Form_ID_alter(&
hook_form_Form_ID_alter(&$form, &$form_state, $form_id)
应该为:
hook_form_Form_ID_alter(&$form, &$form_state)