2009-08-10 4 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'을 (를) 채우는'build_load()'함수가 있습니까? – ceejayoz

+0

@ceejayoz 콜백 함수에서 방금로드하는 것처럼 building_load() 함수가 없습니다. 방금'%'로 떨어 뜨리거나'building_load()'를 만들면 더 좋을까요? – dcousineau

답변

1

URL에서 작동하려는 기능이있는 경우 URL에서 % 대신 % name을 사용해야합니다. 드루팔 (Drupal)은 사용자와 노드로 모든 작업을 수행합니다. 사용자 나 노드를로드 할 코드가 필요한 장소가 하나 뿐이지 만 많은 곳에서 사용됩니다. 이 경우에는 건물을로드하는 기능을 만들기에 약간 과잉이라고 생각합니다. 반면에 장점은 객체를 찾을 수 없다면 그렇게하는 것입니다. 404 처리를 얻는 것입니다. 가장 좋은 해결책은 실제로 존재하지 않는 건물을 어떻게 처리할지에 관한 것입니다. 캠퍼스 접근성 가이드 (Campus Accessibility Guide) 기능으로 404 옵션을 처리 할 수도 있습니다.이 기능을 사용하면 두 가지 옵션을 어느 정도 일치시킬 수 있습니다. 나는 당신이 할 수있는 것이 무엇이든간에 가장 쉬운 것이기를 갈 것입니다.

+0

이제'$ items [ 'access/%'] = // ...'로 변경하면 더 이상 메뉴 목록에 나타나지 않습니다 ... – dcousineau

+0

그냥 액세스 할 수있는 새로운 메뉴 항목을 추가했습니다. (이제 각각의 기능을 가리키는 액세스 및 액세스/%가 있음). 이제 작동합니다! – dcousineau