回答:
「アクセスコールバック」は、ユーザがページへのアクセス権を持って検証するために呼び出される関数です。特別な場合として、それが値である可能性がありTRUE
、その場合には、すべてのユーザーがそれにアクセスすることができます。言い換えれば、アクセス許可がバイパスされることになります。
「アクセスコールバック」値に関数名(デフォルトでは「user_access」)を使用している場合は、アクセスコールバック関数に渡される引数を含む配列である「アクセス引数」も使用できます。
他のメニューのコールバックと同じように、引数は、文字列、または数値でなければなりません。それは数だ場合には、値がメニューパスから取得した値に置き換えられます。あなたの代わりに番号で、この交換を避けたい場合は、文字列を使用する必要があります。例えば、使用して"1"
自動置換を回避するアクセスコールバックに渡される引数の一つとして。
これらは、Drupalコアモジュールから使用されるメニューコールバック宣言の例です。(例はDrupal 7コードからのものですが、私が指摘したいことのために、それは違いを生じません。)
これは、アクセスコールバックがuser_access()である例です。
$items['file/progress'] = array(
'page callback' => 'file_ajax_progress',
'delivery callback' => 'ajax_deliver',
'access arguments' => array('access content'),
'theme callback' => 'ajax_base_page_theme',
'type' => MENU_CALLBACK,
);
これは、アクセスコールバックが関数名ではない例です。
$items['user'] = array(
'title' => 'User account',
'title callback' => 'user_menu_title',
'page callback' => 'user_page',
'access callback' => TRUE,
'file' => 'user.pages.inc',
'weight' => -10,
'menu_name' => 'user-menu',
);
この場合、アクセスコールバックは渡されるuser_view_access()であり、番号1ではなく、メニューパス(この場合は「user /%user」)から取得した値です。関数はによって返される値を取得するため、これは特定のケースuser_load()
です。
$items['user/%user'] = array(
'title' => 'My account',
'title callback' => 'user_page_title',
'title arguments' => array(1),
'page callback' => 'user_view_page',
'page arguments' => array(1),
'access callback' => 'user_view_access',
'access arguments' => array(1),
// By assigning a different menu name, this item (and all registered child
// paths) are no longer considered as children of 'user'. When accessing the
// user account pages, the preferred menu link that is used to build the
// active trail (breadcrumb) will be found in this menu (unless there is
// more specific link), so the link to 'user' will not be in the breadcrumb.
'menu_name' => 'navigation',
);
前のメニューが次のように定義され、「user / hello」などのパスで呼び出されたとします。
$items['user/%'] = array(
'title' => 'My account',
'title callback' => 'user_page_title',
'title arguments' => array(1),
'page callback' => 'user_view_page',
'page arguments' => array(1),
'access callback' => 'user_view_access',
'access arguments' => array(1),
// By assigning a different menu name, this item (and all registered child
// paths) are no longer considered as children of 'user'. When accessing the
// user account pages, the preferred menu link that is used to build the
// active trail (breadcrumb) will be found in this menu (unless there is
// more specific link), so the link to 'user' will not be in the breadcrumb.
'menu_name' => 'navigation',
);
この場合、アクセスコールバックは引数としてパスから取得した値を受け取ります(0は「ユーザー」を意味し、1は「ユーザー」とスラッシュの後の部分を意味します)。この場合、その値は「hello」です。
これらのワイルドカード引数をよりよく理解するには、ワイルドカードローダー引数を参照してください。ドキュメントページにはDrupal 6というタグが付いていますが、報告された内容はDrupal 7でも有効です。
アクセスコールバックは、一部のユーザーが何らかの権限を持っているかどうかを調べる機能です。デフォルトのアクセスコールバックはuser_access()です
アクセス引数は、アクセスコールバックによって検査される許可をリストします。例:「コンテンツにアクセス」
access callback
でしょうか?それが他のものであったなら、それはuser_access()
必要性を取り除くでしょうaccess arguments
か?
access arguments
か?