web-dev-qa-db-fra.com

Comment puis-je créer par programme un lien / URL avec des chaînes de requête définies à partir de paramètres?

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?

1
badm

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

1
vinhdv

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>';
1
Ajay Reddy