ページへのアクセスを制限したい。管理者のみがページを表示できるようにする必要があります。
私は従った このチュートリアル
function example_menu() {
$items['example'] = array(
'title' => 'My Page',
'page callback' => 'example_custom_page',
'access callback' => 'example_user_has_role',
'access arguments' => array(1, array('adminstrator')), // Argument 1 loads the user, argument 2 is the role name.
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function check_user_has_role($user, $roles = array()) {
foreach ($roles as $role) {
if (in_array($role, $user->roles)) {
return TRUE;
}
}
return FALSE;
}
しかし、ログアウトした後でも [〜#〜] url [〜#〜] にアクセスできました。私の間違いは何ですか?これを達成するためのより良い方法はありますか?
アクセスコールバックの名前が間違っていると思います。 (example_user_has_role
=> check_user_has_role
)。また、ロール名(adminstrator
=> administrator
)を間違えました。
とにかく、あなたはこれをより簡単な方法でこれを達成することができます(URLの引数を避けます)
function example_menu() {
$items['example'] = array(
'title' => 'My Page',
'page callback' => 'example_custom_page',
'access callback' => 'check_user_has_role',
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function check_user_has_role() {
global $user;
if (in_array('administrator', $user->roles)) {
return TRUE;
}
return FALSE;
}
あなたはこの例にそのまま従いませんでした。
この例では、次のように自動読み込みを使用しています。
$items['example/%user']
あなたの道はそうではない、それゆえあなたの問題。
$ userをパラメーターとしてアクセスコールバックと引数にドロップし、以下を使用して疑似ユーザーオブジェクトを取得します。
global $user