วิธีรับชื่อเส้นทางของหน้ามุมมองอย่างไร


16

ในตัวจัดการการส่งแบบกำหนดเองของฉันฉันต้องการเปลี่ยนเส้นทางไปยังหน้ามุมมอง Url สมมติว่าชื่อมุมมองของฉันคือทีมและเส้นทางของมันคือ/admin/teamฉันพบว่าฉันควรใช้$from_state->setRedirect('route');แต่เมื่อฉันลอง$from_state->setRedirect('/admin/team');ประสบข้อผิดพลาดฉันจะดูชื่อเส้นทางได้อย่างไร


นี่เป็นสิ่งจำเป็นสำหรับการกำหนดค่าเมนูคงที่ของ YAML
vijaycs85

1
ไม่ใช่การตอบกลับโดยตรง แต่ฉันมีคำถามเดียวกันกับลิงก์ไปยังมุมมองที่กำหนดเองในโมดูลที่กำหนดเองอื่นดังนั้นในเมนูไฟล์การกำหนดค่า: MODULE.links.menu.yml สร้างโหนดพร้อมตัวเลือกเส้นทาง route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1หาก page_1 เป็นชื่อของโหมดการดูหน้าเว็บ
Jean-Luc Barat

คำตอบ:


39

ชื่อเส้นทางที่ถูกต้องสำหรับการดูคือview.VIEW_MACHINE_NAME.PAGE_MACHINENAME(อีกคำ"view.$view_id.$display_id") ลองทำสิ่งต่อไปนี้

use \Drupal\Core\Url;

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

และสำหรับกรณีของคุณ

$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

เรียนรู้เพิ่มเติม: วิธีกำหนดชื่อเส้นทาง

หลังจากความคิดเห็น @ 4k4 คุณสามารถเปลี่ยนเส้นทางไปยังเราเตอร์ที่กำหนดเองด้วย URL

เพียงต้องการใช้ $form_state->setRedirectUrl($url)


คำตอบนี้ค่อนข้างน้อยเนื่องจากคุณได้รับชื่อเส้นทางที่ถูกต้องสำหรับมุมมองดังนั้นไม่จำเป็นต้องสร้างวัตถุ URL จากชื่อเส้นทางนั้น คุณควรใช้ชื่อเส้นทางได้โดยตรง: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner

5

ในการใช้มุมมองตัวกรองเชิงบริบทเป็นพารามิเตอร์ให้ใช้ arg_X, fe

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

3

Webprofiler ของโมดูลdevelให้คุณดูเส้นทางของหน้าใด ๆ

นอกจากนี้ยังแสดงจำนวนการสืบค้น DB ที่เกิดขึ้นในหน้าเว็บและเวลาที่ร้องขอนอกเหนือไปจากคุณสมบัติอื่น ๆ อีกมากมาย

มีให้สำหรับ Drupal 7 และ 8


2

ตัวอย่างง่ายๆ: มันจะทำงาน :)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1

ไม่จำเป็นต้องใช้ Drupal \ Core \ Url - คุณใช้เส้นทางอย่างถูกต้องดังนั้นไม่จำเป็นต้องใช้คลาส URL
kbrinner

1

สำหรับ Durpal 8 คุณอาจดูในตารางฐานข้อมูล "เราเตอร์" เพื่อรับพารามิเตอร์ redirct ของคุณ

ค้นหาค่าที่สอดคล้องกันในคอลัมน์ "ชื่อ" และเปรียบเทียบกับคอลัมน์เส้นทาง

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.