Lors de la création d'un lien depuis yaml
à savoir: mymodule.links.action.yml
my_module.my_entity.add:
route_name: node.add
title: 'Add My Entity'
route_parameters:
node_type: 'my_entity'
appears_on:
- my_module.my_entity.admin_content
Existe-t-il un moyen de générer ces liens avec le ? Destination = chemin/vers/rediriger?
Oui, vous pouvez ajouter la requête de destination directement dans le fichier yml. @see:\Drupal\Core\Menu\LocalActionDefault :: getOptions
à savoir: mymodule.links.action.yml
my_module.my_entity.add:
route_name: node.add
title: 'Add My Entity'
route_parameters:
node_type: 'my_entity'
options:
query:
destination: '/path/to/redirect'
appears_on:
- my_module.my_entity.admin_content
La chaîne de requête ne fait pas partie de l'itinéraire. Le contrôleur récupère les paramètres de requête de la requête du serveur Web et effectue le traitement, dans ce cas, renvoie une redirection:
$request = \Drupal::request();
$destination = $request->query->get('destination');
return new RedirectResponse($destination);
Lors de la génération d'une URL pour l'exemple mentionné dans la question, le node_type
est un paramètre qui va dans la route comme configuré dans le fichier yml de routage et la destination est un paramètre de requête qui est ajouté à l'url et ne fait pas partie de la route:
$url = \Drupal\Core\Url::fromRoute(
'node.add',
array('node_type' => $type->id()),
array(
'query' => array('destination' => $destination),
'absolute' => TRUE,
)
);
Des deux côtés, le système de routage ignore tout ce que vous mettez dans la requête de l'url, vous devez gérer cela dans le code vous-même.