老葛的Drupal培训班 Think in Drupal
#ahah元素属性是向Drupal提供AHAH实现信息的,AHAH允许使用JavaScript来修改表单元素。
提示 你可能已经注意到了,在我们描述过的许多表单元素中,#process的默认值都为form_expand_ahah。在元素中添加#ahah属性,就是向Drupal指示为这个元素使用AHAH。函数form_expand_ahah()用来确保#ahah的值拥有合理的默认值。
在上传模块的用于文件上传的附件按钮中,就用到了这一个属性,如下所示:
$form['new']['attach'] = array(
'#type' => 'submit',
'#value' => t('Attach'),
'#name' => 'attach',
'#ahah' => array(
'path' => 'upload/js',
'wrapper' => 'attach-wrapper',
'progress' => array(
'type' => 'bar',
'message' => t('Please wait...'),
),
),
'#submit' => array('node_form_submit_build_node'),
);
#ahah属性的值是一个键值数组。下面的键是必须的:
• path: JavaScript所要请求的菜单项的Drupal路径。菜单项的回调和菜单项的路径以js结尾,这表示该项目是通过JavaScript调用的。在前面的例子中,Drupal路径就是upload/js,而相应的回调就是upload_js()(不信的话,你可以查看modules/upload/upload.module中的函数upload_menu())。
• wrapper: 对应于一个HTML元素的id属性(通常为<div>)。在前面的例子中,上传模块涉及到下面的这个元素:<div id="attach-wrapper">。