如何获取视图页面的路由名称?


16

在我的自定义提交处理程序中,我想重定向到一个视图页面Url,假设我的视图名称是team,其路径是/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

Answers:


39

用于view的正确路由名是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 让您看到任何页面的路线。

除了许多其他功能之外,它还显示页面上进行的数据库查询的数量以及请求时间。

它适用于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'); 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.