2

How can I pass dynamically route parameters to module.links.action.yml?

My code of module.links.action.yml:

module.group_apply:
  route_name: module.group_apply
  title: 'Subscribe to group'
  weight: 0
  appears_on:
    - entity.node.canonical

My code of module.routing.yml:

module.group_apply:
  path: '/projects/{project}/usergroup/{group}/subscribe'
  defaults:
    _controller: '\Drupal\module\Controller\SubscriptionController::subscribe'
    _title: 'Apply'
  options:
    parameters:
      project:
        type: entity:node
      group:
        type: entity:node
  requirements:
    _permission: 'access content'

My subscibe function (actually):

public function subscribe(NodeInterface $project, NodeInterface $group) {
    return array(
        '#markup' => 'HERE WE GO!',
    );
}
  • Can you explain a bit what are you trying to do? – Adrian Cid Almaguer Mar 19 '17 at 0:18
  • /projects/{project}/ /projects/{project}/usergroup/{group}/ this pathes are node-views (contextual filtered by a node-id) And I want to attach some functionality to the views as action links with the contextual attributes like: url.com/projects/32/usergroup/45/subscribe So that I can do some stuff with the information of 32 and 45 (two nodes) – LordOfThePings Mar 19 '17 at 8:58
  • This could work, if both routes, the appears_on and the target route have the same two parameters. But this is not what you have in the question. – 4k4 Mar 19 '17 at 9:44
  • Excuse me, my comment above is wrong. /project is a view - /project/{project} is a node - /projects/{project}/usergroup/ is a view - /projects/{project}/usergroup/{group} is a node. And i want to insert that action link on the node page of /projects/{project}/usergroup/{group}. – LordOfThePings Mar 19 '17 at 11:21
  • 1
    I think you understand it now, alias != route, of course you can replace the missing parameters with fixed ones, but that's not the point – 4k4 Mar 19 '17 at 13:02
0

I was on the wrong track the whole time.

The right way is to use entity.node.canonical as route (/node/{node}) and using other variables from node itself in the subscribe function ($node).

Thank you @4k4 for your help.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.