2009-08-10 8 views
0

私はフォームは間違いありませんが、コールバック関数を使用して外部ソースと表示からデータをロードする必要があります(例:キャンパス内の建物リストとそのリストアクセシビリティ情報)。Drupalモジュールの開発hook_menu()半静的ページの場合

私が必要としているのは、リンク先ページ(すべての建物のリスト)と「個別の建物の表示」ページです。また、私はあなたの学生IDをパンチし、テスト手順に関する情報を見るページを持っています。そして最後に、私は基本的にフォーム(これは過去に成功したことがある)であるページを持っています。

Now、I HAD建物リストは機能していましたが、少し変更を加えて作業を停止しました。

現在、私のhook_menu()関数は、以下のようになります。私は、「キャンパスアクセスガイド」のメニュー項目を作成しておく必要がありますいくつかの変更前

<?php 
/** 
* Implementation of hook_menu() 
*/ 
function disability_menu() 
{ 
    $items = array(); 

    // Ignore me, shell 
    $items['quickreg'] = array(
     'title' => 'Quick Registration', 
     'description' => t(''), 

     'page callback' => 'drupal_get_form', 
     'page arguments' => array(), 
     'file' => 'disability.quickreg.view.inc', 

     'access arguments' => array('access quick registration system'), 

     'type' => MENU_SUGGESTED_ITEM, 
    ); 

    $items['tests/status'] = array(
     'title' => 'Test Status Results', 
     'description' => t('Check on the status of your tests'), 

     'page callback' => 'disability_view_testing_status', 
     'page arguments' => array(), 
     'file' => 'disability.tests.view.inc', 

     'access arguments' => array('access test check information'), 

     'type' => MENU_CALLBACK, 
    ); 

    $items['tests'] = array(
     'title' => 'Testing Services', 
     'description' => t('Check on the status of your tests'), 

     'page callback' => 'disability_view_testing', 
     'page arguments' => array(), 
     'file' => 'disability.tests.view.inc', 

     'access arguments' => array('access test check information'), 

     'type' => MENU_SUGGESTED_ITEM, 
    ); 

    $items['access/%building'] = array(
     'title' => 'Campus Accessibility Guide', 
     'description' => t('A summary list of detailed accessibliity information about each building on the A&M campus'), 

     'page callback' => 'disability_view_access', 
     'page arguments' => array(1), 
     'file' => 'disability.access.view.inc', 

     'access arguments' => array('access building access information'), 

     'type' => MENU_SUGGESTED_ITEM, 
    ); 

    return $items; 
} 

は(もちろん有効された後に)正しく表示されるでしょう。 12345

access/%buildingメニュー項目も表示されないとでもリダイレクトループにURL /accessを送る/access urlは、すべての建物の一覧を表示し、正しく働くだろうと/access/12345は正しくID番号の単一のレコードを表示していました(IDが存在しない場合は/accessにリダイレクトするビュー固有の機能にそれを送るIDのために何かが渡されていると思う)。

私が間違っていること、または2つのテーマのページをサポートするために必要なことは誰でも教えてください:/access/access/%building URLパターン?

+1

'%building'を移植するための' building_load() '関数はまだありますか? – ceejayoz

+0

@ceejayozコールバック関数でロードしているので、私は 'building_load()'関数を持っていません。私が '%'に落としたか、あるいは 'building_load()'を作成した方が良いでしょうか? – dcousineau

答えて

1

urlで動作させる機能を持っている場合は、URLの%の代わりに%nameを使用してください。 Drupalはこれをユーザーとノードを使って全面的に行います。これは非常にスマートです。ユーザーやノードをロードするコードを1つの場所に配置する必要がありますが、多くの場所で使用されます。この場合、ビルをロードする関数を作るのはちょっと残念です。一方、利点は、そうすることで、オブジェクトが見つからない場合は404処理を取得することです。最良の解決策は、存在しない建物をどのように処理したいかということになります。 「キャンパスアクセシビリティガイド」機能で404を処理して、2つのオプションをほぼ同じにすることさえできます。私はあなたが作るのが一番簡単なものに行くだろう。

+0

これを '$ items ['access /%'] = // ...'に変更してもメニューリストに表示されなくなりました... – dcousineau

+0

気にしないで、ちょっとアクセスして新しいメニューエントリを追加しました(現在、アクセス権とアクセス権/%はそれぞれの機能を指しています)。それは今働きます! – dcousineau

関連する問題