Routing 使用参数转换Drupal 8自定义路由路径
我有以下路线Routing 使用参数转换Drupal 8自定义路由路径,routing,drupal-8,translate,Routing,Drupal 8,Translate,我有以下路线 my_module.order_details: path: '/account/orders/{orderId}' 在Drupal8中是否有任何方法可以将此路径转换一次 对于所有其他的路由,我都可以在需要翻译的语言中添加一个url别名。但是,因为这个参数{orderId}似乎不起作用,我找不到一种方法将通配符添加到url别名中。(我想这会解决我的问题) 我知道我可能会为每个orderId创建一个翻译后的url别名,但如果可能的话,我希望避免这样做 感谢使用动态路由进行路
my_module.order_details:
path: '/account/orders/{orderId}'
在Drupal8中是否有任何方法可以将此路径转换一次
对于所有其他的路由,我都可以在需要翻译的语言中添加一个url别名。但是,因为这个参数{orderId}似乎不起作用,我找不到一种方法将通配符添加到url别名中。(我想这会解决我的问题)
我知道我可能会为每个orderId创建一个翻译后的url别名,但如果可能的话,我希望避免这样做
感谢使用动态路由进行路由转换的示例: 您的_module.routing.yml
route_callbacks:
- '\Drupal\your_module\DynamicRoutes\DynamicRoutes::routes'
您的_模块/src/DynamicRoutes/DynamicRoutes.php
<?php
namespace Drupal\your_module\DynamicRoutes;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
/**
* Listens to the dynamic trousers route events.
*/
class DynamicRoutes {
public function routes(){
$route_collection = new RouteCollection();
$route_lang_en = new Route(
// path
'/example-lang-en',
// defaults
[
// example controller
'_controller' => '\Drupal\system\Controller\SystemController::systemAdminMenuBlockPage',
'_title' => 'Your title en'
],
// requirements:
[
'_permission' => 'access content',
]
);
$route_collection->add('example.language_en', $route_lang_en);
$route_lang_fr = new Route(
'/example-lang-fr',
[
'_controller' => '\Drupal\system\Controller\SystemController::systemAdminMenuBlockPage',
'_title' => 'Your title fr'
],
['_permission' => 'access content']
);
$route_collection->add('example.language_fr', $route_lang_fr);
return $route_collection;
}
}
此代码仅供解释。然而,我建议使用一些自定义的可重用方法来构建路由,这些方法可以通过所有语言进行迭代,并对路径
和\u标题
进行自定义翻译,而\u控制器
,“u权限”
和任何其他不可翻译的数据在每个路由翻译中都被重用
对于调试路由非常有用
drupal dr
(列出所有路线)
drupal dr示例。语言\u en
(获取示例路由参数)
drupal dr示例。语言\u fr
(获取fr示例路由参数)
example.language_en:
path: '/example-lang-en'
defaults:
_controller => '\Drupal\system\Controller\SystemController::systemAdminMenuBlockPage',
_title => 'Your title en'
requirements:
_permission: 'access content'
example.language_fr:
path: '/example-lang-fr'
defaults:
_controller => '\Drupal\system\Controller\SystemController::systemAdminMenuBlockPage',
_title => 'Your title fr'
requirements:
_permission: 'access content'