Làm thế nào để có được tên tuyến đường của một trang xem?


15

Trong trình xử lý gửi tùy chỉnh của tôi, tôi muốn chuyển hướng đến một trang xem Url, giả sử tên chế độ xem của tôi là nhóm và đường dẫn của nó là /admin/team, tôi tìm ra tôi nên sử dụng $from_state->setRedirect('route');nhưng khi tôi đã thử $from_state->setRedirect('/admin/team');Đối mặt với lỗi, Làm cách nào tôi có thể xem tên tuyến đường trong?


Điều này cũng được yêu cầu cho cấu hình menu YAML tĩnh.
vijaycs85

1
Không trả lời trực tiếp, nhưng tôi có cùng một câu hỏi với các liên kết đến chế độ xem tùy chỉnh trong một mô-đun tùy chỉnh khác, vì vậy trong menu tệp cấu hình: MODULE.links.menu.yml tạo một nút với tùy chọn tuyến route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1nếu page_1 là tên của chế độ xem trang.
Jean-Luc Barat

Câu trả lời:


38

Tên định tuyến chính xác cho chế độ xem là view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(trong một từ khác "view.$view_id.$display_id"). thử một cái gì đó như sau

use \Drupal\Core\Url;

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

và cho trường hợp của bạn

$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

Lean more: Cách xây dựng tên tuyến

sau khi nhận xét @ 4k4, bạn cũng có thể chuyển hướng biểu mẫu đến bộ định tuyến tùy chỉnh bằng URL

chỉ cần sử dụng $form_state->setRedirectUrl($url)


Câu trả lời này hơi sai, vì bạn đang nhận được tên định tuyến chính xác cho chế độ xem, do đó không cần phải tạo đối tượng URL từ tên thường trình đó. Bạn sẽ có thể sử dụng trực tiếp tên thường trình: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner

5

Để sử dụng các bộ lọc theo ngữ cảnh xem làm tham số, hãy sử dụng arg_X, fe.

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

3

Webprofiler của mô-đun phát cho phép bạn xem tuyến đường của bất kỳ trang nào.

Nó cũng hiển thị số lượng truy vấn DB được thực hiện trên trang và cả thời gian yêu cầu ngoài nhiều tính năng khác.

Nó có sẵn cho Drupal 7 và 8.


2

Ví dụ đơn giản: Nó sẽ hoạt động :)

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

Không cần sử dụng Drupal \ Core \ Url - bạn đang sử dụng tuyến chính xác để không cần lớp URL.
kbrinner

1

Đối với Durpal 8, bạn có thể xem xét bảng cơ sở dữ liệu "bộ định tuyến" để nhận các tham số tuần hoàn.

Tìm giá trị tương ứng trong cột "tên" và so sánh với cột đường dẫn.

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.