drupal_goto (request_uri ()) menggantikan '?', '=' dan '&' di url saya


11

Saya perlu mengarahkan pengguna dari halaman dengan example.com/node/add/dispo?arg1=1&arg2=2 ke jenis URL yang sama. Tetapi ketika saya hanya melakukan drupal_goto(request_uri());, itu mengarahkan pengguna saya ke example.com/node/add/dispo%25F%3C dll ....

Saya mencoba str_replace tetapi tidak berhasil.

Apakah Anda punya solusi?

Jawaban:


32

drupal_goto()menerima $optionsparameter untuk diteruskan ke url()fungsi. Anda dapat mengirimkan string kueri seperti ini:

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

Contoh itu akan diteruskan ke / path? Foo = bar


Saya kira itu lebih bersih daripada header (lokasi?
— Gregory Kapustin

2
Itu benar-benar tergantung, jika Anda melihat kode semua drupal_goto()tidak membangun URL berdasarkan parameter yang disediakan yang kemudian memanggilnya header()sendiri. Perbedaan utama adalah yang drupal_exit()dipanggil, memberikan jalan keluar yang bersih ke skrip, dan jika $_GET['destination']diset, itu akan menimpa jalur yang Anda lewati ke fungsi. Umumnya drupal_goto()harus digunakan, tetapi ada saat-saat ketika tua yang baik header()lebih tepat. Tergantung apa yang perlu Anda lakukan
— Clive

Ok terima kasih. Saya akan menggunakan tajuk untuk yang satu ini tetapi tetap saja, saya kira drupal_goto lebih bersih.
— Gregory Kapustin

perhatikan bahwa array opsi memiliki permintaan array dengan pasangan nama dan nilai. Jadi kode saya untuk masuk dengan variabel tujuan terlihat seperti ini: $ options = array ('query' => array ('destination' => 'internal / dashboard') drupal_goto ('user', $ options));
— reptil

Luar biasa harus belajar sesuatu yang baru
— Rishab

13

Ini sama dengan jawaban Clive. Itu IMO yang benar tetapi saya hanya ingin menambahkan jawaban yang sesuai dengan kasus penggunaan Anda 1: 1.

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

Anda ingin menelepon drupal_goto()ke lokasi yang sama dengan yang sekarang.

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

current_path () mengembalikan node / add / dispo; drupal_get_query_parameters () mengembalikan semua $_GETparameter kecuali $_GET['q']yang merupakan simpul jalur internal / add / dispo.

Saat Anda menelepon drupal_goto(), Drupal dapat membangun kembali URI yang sama untuk mengirim pengguna.


Hebat, aku menaikkan jawabanmu sementara aku tetap memilih Clive. Terima kasih semuanya.
— Gregory Kapustin

0

Anda juga bisa menggunakan drupal_goto($GLOBALS['base_root'] . request_uri());

Perhatikan bahwa ini tidak sama dengan di drupal_goto(request_uri());mana parameter yang dilewatkan di urlencoded seolah-olah itu adalah jalur drupal internal, yang sebenarnya merupakan sumber masalah Anda.


-1

Sebenarnya saya membuatnya bekerja dengan menggunakan header("location: " . $base_path . request_uri());


3
ini salah. drupal_goto dibuat karena alasan tertentu, Anda tahu.
— AyeshK
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.