hook__form_alter resetting& $ form

时间:2010-11-10 13:14:34

标签: drupal drupal-6

我正在使用hook_form_alter对内容进行一些访问,因为使用hook_access时会遇到使用模块外部定义的内容类型的问题。如果用户没有访问权限,我在页面顶部设置了一条消息,我不想输出表单。我有以下代码。

function mymodule_form_alter(&$form, $form_state, $form_id) {
    switch ($form_id) {
        case 'cmyformm':  
            dsm($form);
           $from = null;
            dsm($form);
            drupal_set_message('You do not have access to this page');
            break;
     }
}

然而,即使我将其设置为null,dsm也会返回$ form的相同信息。我如何不显示表单而是显示消息?

3 个答案:

答案 0 :(得分:2)

我不太明白这个问题,但对于初学者,您将$fROm设置为null而不是$fORm。设置为null或仅执行unset($form);应该可以解决问题。

答案 1 :(得分:2)

不应在表单级别进行访问控制。应使用hook_access或路由器的访问参数实现访问控制。如果必须在表单级别执行此操作,请使用user_access()以及您拥有的已定义角色。

答案 2 :(得分:0)

除了@zeroFIG指出的拼写错误之外,您实际上是以错误的方式进行此访问检查。我已经在所有节点类型上使用了node_example模块和sucess - 没有在与hook_access相同的模块中定义。看看这里:http://api.drupal.org/api/examples/node_example--node_example.module/6