Bagaimana cara mendapatkan nama rute dari halaman tampilan?

15

Di handler kustom saya, saya ingin mengarahkan kembali ke halaman tampilan Url, anggap saja nama tampilan saya adalah tim dan jalurnya adalah /admin/team, saya tahu saya harus menggunakan $from_state->setRedirect('route');tetapi ketika saya mencoba $from_state->setRedirect('/admin/team');Menghadapi kesalahan, Bagaimana saya bisa mendapatkan nama rute tampilan?

David Mcsmith
sumber
Ini juga diperlukan untuk konfigurasi menu YAML statis.
vijaycs85
1
Bukan respons langsung, tetapi saya memiliki pertanyaan yang sama untuk menautkan ke tampilan kustom di modul kustom lain sehingga dalam menu file migrasi: MODULE.links.menu.yml membuat simpul dengan opsi rute route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1jika page_1 adalah nama mode tampilan halaman.
Jean-Luc Barat

Jawaban:

38

Routename untuk view yang benar adalah view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(dengan kata lain "view.$view_id.$display_id"). coba sesuatu seperti mengikuti

use \Drupal\Core\Url;

$url = Url::fromRoute('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
$form_state->setRedirectUrl($url);

dan untuk kasus Anda

$url = Url::fromRoute('view.team.page_1'); // page_1 is my guess as to your page name, please replace it with your page machine_name

Bersandar lebih lanjut: Cara merumuskan nama rute

setelah @ 4k4 komentar, Anda juga dapat mengarahkan formulir ke router khusus dengan URL

hanya perlu digunakan $form_state->setRedirectUrl($url)

Yusef
sumber
Jawaban ini sedikit salah, karena Anda mendapatkan nama pengguna yang benar untuk tampilan, jadi tidak perlu membuat objek URL dari nama itu. Anda harus dapat menggunakan nama pengguna secara langsung: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner
5

Untuk menggunakan filter kontekstual view sebagai parameter gunakan arg_X, fe.

$url = Url::fromRoute('view.team.page_1', ['arg_0' => 1234]);
Remy
sumber
3

Webprofiler dari modul devel memungkinkan Anda melihat rute dari halaman mana pun.

Ini juga menampilkan jumlah permintaan DB yang dibuat pada halaman dan juga waktu permintaan selain banyak fitur lainnya.

Ini tersedia untuk Drupal 7 dan 8.

Parag
sumber
2

Contoh sederhana: Ini akan berhasil :)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1
kalidasan
sumber
Tidak perlu menggunakan Drupal \ Core \ Url - Anda menggunakan rute dengan benar sehingga kelas URL tidak diperlukan.
kbrinner
1

Untuk Durpal 8 Anda mungkin melihat ke tabel database "router" juga untuk mendapatkan parameter redirct Anda.

Cari nilai yang sesuai di kolom "nama" dan bandingkan dengan kolom jalur.

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Olli Bolli
sumber