Поскольку $link
построено неправильно:
$link = Link::createFromRoute(
$this->t('the general terms and conditions of business'),
'entity.commerce_store.canonical',
['commerce_store' => $store_id, '/cgv'], # -> this is wrong
$attributes
)->toString();
$ route_parameters: (необязательно) Ассоциативный массив имен параметров
и значения.
Вы не указали никакого имени для 2-х параметров маршрута, поэтому соответствующий ключ массива откат к первому доступному числовому индексу, то есть 0
, что означает [ '/cgv' ]
, становится [ 0 => '/cgv' ]
, и вы не получаете ссылку ты ожидал
Я думаю (если я правильно понял вашу проблему), вам нужно в первую очередь определить, какой конкретный маршрут обрабатывает cgv для данного commerce_store, то есть с добавлением /cgv
:
$route_collection = new RouteCollection();
$route = (new Route('/commerce_store/{commerce_store}/cgv'))
->addDefaults([
'_controller' => $_controller,
'_title_callback' => $_title_callback,
])
->setRequirement('commerce_store', '\d+')
->setRequirement('_entity_access', 'commerce_store.view');
$route_collection->add('entity.commerce_store.canonical.cgv', $route);
... чтобы вы могли создавать ссылки на основе этого конкретного маршрута:
$link = Link::createFromRoute(
$this->t('the general terms and conditions of business'),
'entity.commerce_store.canonical.cgv',
['commerce_store' => $store_id],
$attributes
)->toString();