Steps for generating links with query parameters.1. Create an Url with query parameters using the core Url class.// Set query parameter in option array. $options = [ 'query' => [ 'xyz_param' => 'param_value', ], ]; // Create url. $url = Url::fromRoute('entity.node.canonical', ['node' => 1], $options); // We can also use setOptions to add/update query parameters. $url->setOptions($options); /* * Other url functions * - \Drupal\Core\Url::fromRoute($route_name, $route_parameters = [], $options = []) * - \Drupal\Core\Url::fromRouteMatch(RouteMatchInterface $route_match) * - \Drupal\Core\Url::fromUri($uri, $options = []) * - \Drupal\Core\Url::fromUserInput($user_input, $options = []) */Copy2. Create Link from URL// Create Link $link = Link::fromTextAndUrl('Link Text', $url); // Link to string - if needed. $link = Link::fromTextAndUrl('Link Text', $url)->toString();CopyWith Twig{% set url = url('entity.node.canonical',{'node':'1'},{'query':{'xyz_param':'param_value'}})|render %} {{ link("Link Text", url, { 'class':['btn', 'btn-primar']} ) }}CopyRetrieve path query parameters in \Drupal::request()\Drupal::request()->get('xyz_param'); // OR \Drupal::request()->query->get('xyz_param');Copy TagsDrupalDrupal 9LinkURL