it-swarm-tr.com

URL parametrelerini menü geri çağrılarına aktarma

'Kullanıcı girişi' adı verilen yeni bir yol oluşturmak için hook_menu() uyguladım. Sayfa geri arama işlevi $_GET['parameter']; ancak http://site.com/user-login?parameter=test adresine gittiğimde 404 hatası alıyorum. Bu çalışmayı sağlamak için hook_menu() uygulamasını nasıl uygulamalıyım?

Bu kullandığım kod

/**
 * 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']);  

}

Sayfa http://site.com/user-login?uid=2?expiry=3?hash=sd7wdah şeklinde adlandırılır.

7
Matthew Hui

drupal menü sistemi $ _GET argümanlarını umursamıyor, onlarla ne istersen yapabilirsin, hook_menu () uygulamasını ** etkilemez **.

Yani, hata başka bir yerde yatıyor. Hook_menu () sonucu saklanır, her sayfada çağrılmaz. Bu işlevde herhangi bir şeyi değiştirir/eklerseniz, menüleri yeniden oluşturmanız gerekir. Bunu yapmanın en hızlı yolu, devel.module's Development bağlantılar bloğundaki "drush cc all" veya "menülerin yeniden oluşturulması" komutunu kullanmaktır. Bununla birlikte, modüller sayfasını da gönderebilirsiniz.

** Bununla birlikte, menü sistemini ek yol argümanları olarak içinden argümanlarını iletmek çok daha yaygındır. Yoldan sonra iletilen her şey otomatik olarak sayfanızın geri aramasına bağımsız değişken olarak geçirilir. Bu yüzden user-login/2/3/sd7wdah çağrısı, bu üç argümanı user_login_callback (2, 3, 'sd7wdah') olarak işlevinize iletir. Bu bağımsız değişkenleri hook_menu (): user-login/%/%/% İçinde böyle bir yol belirterek ve şu şekilde yol bağımsız değişkenleri tanımlayarak da gerekli yapabilirsiniz: 'path arguments' => array(1, 2, 3),. Bu, işlevinizin yalnızca bu üç argümanla çağrılabilmesini ve isteğe bağlı olmamalarını sağlayacaktır.

4
Berdir

Sadece netlik için,

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

işe yaramazsa, şöyle olmalıdır:

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

Sadece tek bir "?" ve her ek parametre "&" ile ayrılır

1
DeeZone