首页 / 帖子
关于menu_alter中无法修改某些menu的access callback的问题
function mymodule_menu_alter(&$items) {
  global $user;
  if($user->uid !==1) {
    // 禁止访问用户账户编辑页面
    $items['user/%user/edit']['access callback'] = FALSE;

代码如上,我想让除了超级用户之外的人无权编辑自己的账户。

但是发现,这个判断条件不起作用,超级用户也编辑不了用户了,自己的账户也都不能编辑了。

请问我要实现这个功能的话,应该怎么做呢?

1个答案
发布于:2014-01-23 11:16

已解决,改成修改access callback的方式可以生效。

function mymodule_menu_alter(&$items) {
  // 禁止普通用户访问自己的账户编辑页面
  $items['user/%user/edit']['access callback'] = 'custom_user_edit_access';
}

/**
 * Access callback for user account editing.
 */
function custom_user_edit_access($account) {
  return user_access('administer users') && $account->uid > 0;
}