web-dev-qa-db-ja.com

匿名ユーザーにカスタムメニューを許可する

最近、一緒に仕事をしようとしているレガシープロジェクトを継承しました。メニューフックを使用してカスタムメニューを定義しましたが、匿名ユーザーはそのメニューにアクセスできず、代わりにユーザーログインページにリダイレクトされるようです。これはかなり大きなプロジェクトであり、コールが傍受されてリダイレクトされる場所を正確に把握するのに苦労しています。どんな助けでも素晴らしいでしょう。

これが役立つ場合、リダイレクトは次のようになります:localhost/user?destination = results

function test_results_menu() {
  $items = array();
  $items['results'] = array(
    'page callback' => 'display_test_results',
    'access callback' => 'test_results_resource_access'
  );
  return $items;
}

function test_results_resource_access() {
  return TRUE;
}

function display_test_results() {
  //  TODO Display results
  return "hi";
}

更新:奇妙なことに、プロジェクトでは最近、匿名ユーザーがそこでデータを表示できるようにするサービスモジュールを使用して、残りのエンドポイントも取得しました。

4
Sathariel

全員がメニューにアクセスする場合は、access callback TRUEを設定します(決定機能は必要なく、TRUEを渡します(これはテストであり、将来的に条件付きメニューが必要になる場合があります))。

function test_results_menu() {
  $items = array();
  $items['results'] = array(
     'title' => 'your title',
     'description' => 'menu description',
    'page callback' => 'display_test_results',
    'access callback' => TRUE,
  );
  return $items;
}


function display_test_results() {
  //  TODO Display results
   print "hi";
}

これは仕事になります。 hook_menuを変更した後は、drupalキャッシュをクリアしてください。

2
Yusef