1

カスタム drupal 7 モジュールで問題が発生しています。これは私の最初のモジュールではないことに注意してください。これは私の hook_menu です。

function blog_contact_menu(){
    $items = array();
    $items["blog_contact/send_to_one"] = array(
    "page_callback"=>"single_blogger_contact",
    "access_arguments"=>array("access blog_contact content"),
    "type"=>MENU_CALLBACK
    );
    return $items;
}

これが私のパーマ機能です。

function blog_contact_perm() {
    return array("access blog_contact content");
}

これは機能するはずですが、ajax 呼び出しを行うと、403 が禁止されます。bla bla を表示する権限がありません。私の ajax 呼び出しは正確でシンプルです。URL は正しく、タイプは post です。直接理由はわかりません。

4

2 に答える 2

4

メニュー ルーター項目のプロパティには、アンダースコアではなくスペースが含まれています。access_arguments実際にはである必要がありますaccess arguments、 でpage_argumentsある必要がありますpage argumentsなど:

function blog_contact_menu(){
  $items = array();
  $items["blog_contact/send_to_one"] = array(
    "title" => "Title",
    "page callback"=>"single_blogger_contact",
    "access arguments"=>array("access blog_contact content"),
    "type"=>MENU_CALLBACK
  );
  return $items;
}

titleまた、必須のプロパティであることに注意してください。

それとは別に、hook_permission()すでに述べた問題はあなたのコードに当てはまります。

于 2012-08-16T14:37:27.620 に答える
0

実装で を指定しなかったため、デフォルトで関数を使用し、access_callback権限が付与 されているかどうかを確認しています。hook_menuuser_accessaccess blog_contact content

function blog_contact_menu(){
    $items = array();
    $items["blog_contact/send_to_one"] = array(
    // As mentioned in Clive's answer, you should provide a title 
    "title" => "Your Title goes here",
    "page callback"=>"single_blogger_contact",
    // No "access callback" so uses user_access function by default
    "access arguments"=>array("access blog_contact content"),
    "type"=>MENU_CALLBACK
    );

これaccess blog_contact contentは Drupal が認識する権限ではないため、user_access関数は false を返すため、403 アクセスが拒否されます。

Drupal にパーミッションを伝えたい場合access blog_contact content、フックはhook_permissionではなくhook_permです。

そして、あなたのコードは次のようになるはずです:

function blog_contact_permission() {
  return array(
    'access blog_contact content' => array(
      'title' => t('Access blog_contact content'), 
      'description' => t('Enter your description here.'),
    ),
  );
}
于 2012-08-16T14:19:21.957 に答える