我正在使用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的相同信息。我如何不显示表单而是显示消息?
答案 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