Dans Drupal 8 je personnalise le filtre dans le bloc dans le menu de la barre latérale. Lorsque l'utilisateur clique sur l'option dans le bloc, je dois transmettre son choix à l'URL.
$this->args = \Drupal::request()->query->all();
$args[$id] = $value;
$url = $this->url = Url::fromRoute('<current>');
$url->setOptions(array('query' => $args));
$link = '<a href="' . $url->toString() . '">' . $label . '</a>';
Et à la fin, mon URL ressemble à
drupal/page_view?content_type=type
mais j'ai besoin que mon URL ressemble à
drupal/page_view?content_type%5Btype%5D=type
Savez-vous comment modifier mon code?
Vous essayez le code:
$options = ['absolute' => TRUE];
$url = Url::fromRoute('entity.node.canonical', ['node' => 526,'destination'=>'router_back'], $options);
$link = Link::fromTextAndUrl('Here is the link', $url)->toString();
Lien de résultat: node/526?destination=router_back
Vous voyez plus rl :: fromRoute
Disons que si votre $args
est un tableau comme ci-dessous:
$args['content_type'] = 'type';
Ensuite, vous devez y ajouter type
plutôt que de simplement donner votre $id to $args
$args['content_type'] = ['type' => '123'];
Ensuite, votre requête globale sera comme:
$this->args = \Drupal::request()->query->all();
$this->args = [$id => $value];
$url = $this->url = Url::fromRoute('<current>');
$url->setOptions(array('query' => $args));
$link = '<a href="' . $url->toString() . '">' . $label . '</a>';