Drupal 8: 如何重定向带有路由参数的路由?

4
我已在Drupal 8中创建了带参数的动态路由。现在我需要根据用户操作将其重定向到此页面。如何实现呢?
以下是示例页面路由器代码:
domain_site_settings.config_form:
  path: '/admin/config/domain/domain_site_settings/{domain_id}/edit'
  defaults:
    _form: '\Drupal\domain_site_settings\Form\DomainConfigSettingsForm'
    _title: 'Domain site settings'
  requirements:
    _permission: 'domain site settings'
  options:
    _admin_route: TRUE

其他用户标记了您的问题,认为其质量低且需要改进。我重新组织/格式化了您的输入,以使其更易于阅读/理解。请检查我的更改以确保它们反映了您的意图。但我认为您的问题仍然无法回答。现在应该[编辑]您的问题,包括您自己的努力(参见帮助我不是一个问题)。如果您对我有进一步的问题或反馈,请随时给我留言。 - GhostCat
3个回答

9

最后我找到了这个问题的答案。

use Symfony\Component\HttpFoundation\RedirectResponse;

$path = \Drupal\Core\Url::fromRoute('domain_site_settings.config_form',
    ['domain_id' => 'drupal_com'])->toString();
  $response = new RedirectResponse($path);
  $response->send();

1
我只想提一下,如果这是在路由控制器中,Symfony期望控制器返回一个Response对象。不要调用$response->send(),只需返回重定向响应即可。 - joe_flash

4
use Drupal\Core\Url;
use Symfony\Component\HttpFoundation\RedirectResponse;  


$url = Url::fromRoute('YOUR CUSTOM ROUTE');
  $query = [
    'searchQuery' => [
      'searchType' => $searchType,
      'title'      => $title,
    ],
  ];
  $path = $url->setOption('query', $query);
  $path = $path->toString();

  $response = new RedirectResponse($path);
  $response->send();

2
use Drupal\Core\Url;
use Symfony\Component\HttpFoundation\RedirectResponse;

...

$url = Url::fromRoute('example_route.subpath', [
  'param1' => 23,
  'param2' => 'xyz'
]);
return new RedirectResponse($url->toString());

或者如果您可以访问FormStateInterface对象

$form_state->setRedirect('example_route.subpath', [
  'param1' => 23,
  'param2' => 'xyz'
]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接