it-swarm-ko.tech

메뉴 매개 변수에 URL 매개 변수 전달

'user-login'이라는 새 경로를 만들기 위해 hook_menu()을 구현했습니다. 페이지 콜백 함수는 $_GET['parameter']와 같은 URL 매개 변수를받습니다. 그러나 http://site.com/user-login?parameter=test 로 이동하면 404 오류가 발생합니다. 이 작업을 수행하려면 hook_menu()을 어떻게 구현해야합니까?

이것은 내가 사용하는 코드입니다

/**
 * Implementation of hook_menu()
 */
function login_menu() {
  //$items = array();

  $items['user-login'] = array(
    'title' => 'External login',
    'page callback' => 'user_login_callback',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function user_login_callback() {

  // Get the URL params
  $uid = urldecode($_GET['uid']);
  $expiry = urldecode($_GET['expiry']);
  $provided_hash = urldecode($_GET['hash']);  

}

페이지는 http://site.com/user-login?uid=2?expiry=3?hash=sd7wdah 와 같이 호출됩니다

7
Matthew Hui

drupal 메뉴 시스템은 $ _GET 인수를 신경 쓰지 않고 원하는대로 무엇이든 할 수 있으며 hook_menu () 구현에 영향을 미치지 않습니다 **.

따라서 오류는 다른 곳에 있습니다. hook_menu ()의 결과가 저장되며 모든 페이지에서 호출되는 것은 아닙니다. 해당 기능을 변경/추가하면 메뉴를 다시 작성해야합니다. 가장 빠른 방법은 devel.module의 개발 링크 블록에서 drush 명령 "drush cc all"또는 "rebuild menus"를 사용하는 것입니다. 모듈 페이지를 제출할 수도 있습니다.

** 즉, 메뉴 시스템을 추가 경로 인수로 through 인수를 전달하는 것이 훨씬 일반적입니다. 경로 이후에 전달 된 것은 자동으로 페이지 콜백에 인수로 전달됩니다. 따라서 user-login/2/3/sd7wdah를 호출하면이 세 인수를 user_login_callback (2, 3, 'sd7wdah')로 함수에 전달합니다. hook_menu () : user-login/%/%/%에서 이와 같은 경로를 지정하고 'path arguments' => array(1, 2, 3),과 같은 경로 인수를 정의하여 이러한 인수를 요구할 수도 있습니다. 이렇게하면 함수 가이 세 가지 인수로만 호출 될 수 있고 선택 사항이 아닌지 확인할 수 있습니다.

4
Berdir

명확성을 위해

http://site.com/user-login?uid=2?expiry=3?hash=sd7wdah

작동하지 않습니다.

http://site.com/user-login?uid=2&expiry=3&hash=sd7wdah

""하나만있는 방법에 유의하십시오. 각 추가 매개 변수는 "&"로 구분됩니다.

1
DeeZone