drupal_goto (request_uri ()), url'deki '?', '=' ve '&' değerlerimin yerini alıyor


11

Kullanıcıyı example.com/node/add/dispo?arg1=1&arg2=2 içeren bir sayfadan aynı URL türüne yönlendirmem gerekiyor. Ancak basitçe bir yaptığımda drupal_goto(request_uri());, kullanıcıyı örnek.com/node/add/dispo%25F%3C vb. Adresine yönlendirir.

Bir str_replace denedim ama işe yaramadı.

Herhangi bir geçici çözüm var mı?

Yanıtlar:


32

drupal_goto()işleve $optionsiletilecek bir parametreyi kabul eder url(). Bunun gibi bir sorgu dizesi iletebilirsiniz:

$options = array('query' => array('foo' => 'bar'));
drupal_goto('path', $options);

Bu örnek / path? Foo = bar'a iletilecek


Sanırım başlıktan daha temiz (konum?
Gregory Kapustin

2
Gerçekten bağlıdır, eğer koda bakarsanız, drupal_goto()daha sonra header()kendi kendine çağırdığı sağlanan parametrelere dayalı bir URL oluşturmaktır . Başlıca farklılıklar drupal_exit(), komut dosyasına temiz bir çıkış sağlayan denir ve $_GET['destination']ayarlanmışsa, işleve ilettiğiniz yolu geçersiz kılar. Genellikle drupal_goto()kullanılmalıdır, ancak iyi yaşlılığın header()daha uygun olduğu durumlar vardır . Yapmanız gereken şeylere bağlı
Clive

Tamam teşekkürler. Bunun için üstbilgiyi kullanacağım ama yine de sanırım drupal_goto daha temiz.
Gregory Kapustin

options dizisinin ad ve değer çiftli bir dizi sorgusu olduğunu unutmayın. Yani bir hedef değişken ile giriş yapmak için kodum şöyle görünür: $ options = array ('query' => array ('destination' => 'internal / dashboard') drupal_goto ('kullanıcı', $ seçenekler));
sürüngen

İnanılmaz yeni bir şeyler öğrenmek lazım
Rishab

13

Bu Clive'nin cevabı ile aynı. Doğru IMO ama sadece 1: 1 kullanım durumunuza uygun cevabı eklemek istedim.

$options = array('query' => drupal_get_query_parameters());
drupal_goto(current_path(), $options);

drupal_goto()Geçerli konumla aynı yeri aramak istediniz .

mysite.com/node/add/dispo?arg1=1&arg2=2

current_path () , düğüm / add / dispo; drupal_get_query_parameters () , iç yol düğümü / add / dispo $_GETdışındaki tüm parametreleri döndürür $_GET['q'].

Aradığınızda drupal_goto(), Drupal kullanıcıyı göndermek için aynı URI'yi yeniden oluşturabilir.


Harika, Clive'nin seçimini sürdürürken cevabını yükselttim. Hepinize teşekkürler.
Gregory Kapustin

0

Ayrıca kullanabilirsiniz drupal_goto($GLOBALS['base_root'] . request_uri());

Not o kadar aynı olmadığını drupal_goto(request_uri());aslında sorununuzun kaynağı olan bir iç drupal yolu, eğer olarak geçirilen parametre urlencoded nerede.


-1

Aslında bunu kullanarak çalıştım header("location: " . $base_path . request_uri());


3
Bu yanlış. drupal_goto bir sebepten ötürü yapılır.
AyeshK
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.