web-dev-qa-db-ja.com

パラメータからクエリ文字列を設定してリンク/ URLをプログラムで作成するにはどうすればよいですか?

Drupal 8の場合、サイドバーメニューのブロックでフィルターをカスタマイズします。ユーザーがブロックのオプションをクリックすると、ユーザーの選択を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>';

そして最後に、私のURLは次のようになります

 drupal/page_view?content_type=type

しかし、私は私のようなURLが必要です

drupal/page_view?content_type%5Btype%5D=type

コードを変更する方法を知っていますか?

1
badm

あなたはコードを試します:

$options = ['absolute' => TRUE];
$url = Url::fromRoute('entity.node.canonical', ['node' => 526,'destination'=>'router_back'], $options);
$link = Link::fromTextAndUrl('Here is the link', $url)->toString();

結果リンク:node/526?destination=router_back

もっと見る rl :: fromRoute

1
vinhdv

$argsが以下のような配列であるとしましょう:

$args['content_type'] = 'type';

次に、単に$id to $argsを与えるのではなく、typeを追加する必要があります

$args['content_type'] = ['type' => '123'];

次に、全体的なクエリは次のようになります。

$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