35

URLのクエリ文字列値を操作しようとしています。

RequestオブジェクトまたはTwigの関数から現在のURLまたはルートを取得できますが、これは私が苦労しているクエリ文字列です。

ルートにあるクエリ文字列パラメータを取得するため、app.request.attributes.get('_ route_params')は必要ありません。

実際にURLにあるクエリ文字列パラメータを取得する必要があります。

Symfony2(PHPコントローラー内)とTwig(Twigテンプレート内)の両方で、以下の2つのことを実行できるようにしたいと思います。

  1. URL内の現在のすべてのクエリ文字列値を取得して表示します

  2. 1を実行しますが、クエリ文字列値の1つを変更してから表示します

これを行う方法を知っている人を見つけることができません。

4

4 に答える 4

65

を使用app.request.query.allしてクエリ文字列を取得できます。

Twigでパラメータを変更したい場合は、これを行うことができます

{% set queryParams = app.request.query.all %}
{% set queryParams = queryParams|merge({queryKey: newQueryValue}) %}
于 2013-03-25T03:07:16.563 に答える
5

コントローラーに

use Symfony\Component\HttpFoundation\Request;

public function fooAction(Request $request)
{
  $params = $request->query->all();
}

注意してください:$request->query->all();クエリパラメータとして指定されたキーを持つ配列を返します

小枝に

コントローラから渡す限り(いつものようにこれを読んでください)、その方法でパラメータをビューに渡すことができます

use Symfony\Component\HttpFoundation\Request;

public function fooAction(Request $request)
{
  $params = $request->query->all();
  return $this->render('MyFooBundle:Bar:foobar.html.twig', array('params' => $params));
}

Twigテンプレートに、 params変数foobar.html.twigを使用するだけですべてのクエリ文字列パラメーターにアクセスできます。

たとえば、このリクエストURLを使用します。http://example.com/?foo=bar&secondfoo=secondbar

{% for paramName, paramValue in params %}
  <div>{{ paramName }}: {{ paramValue }}</div>
{% endfor %}
<div>{{ params.secondfoo }}</div>

小枝の出力:

<div>foo: bar</div>
<div>secondfoo: secondbar</div>
<span>secondbar</span>

もう1つの方法はapp.request.query.all、コントローラーから小枝に何も渡さずに、小枝で使用することです。

最後の注意

配列をコントローラーから小枝に渡すときにこれらのパラメーターの1つを変更する場合は、通常の値の場合と同様に、配列値の1つを変更するだけです(例$params['id'] = $params['id'] - 1;:)

于 2013-03-25T08:01:33.370 に答える
5

クエリ文字列「https://stackoverflow.com?name=jazz」を取得するには

{{ app.request.query.get('name') | default('default value if not set'); }}
于 2018-09-29T15:33:47.367 に答える
0

こんにちはスティーブン私たちは値を取得するためにurソリューションを試しましたが、デフォルト値になります。 http:// localhost:4000 / about / Investmentors / key-dates-and-events-details?year = 2017#q1

私は私の小枝ファイルでこのように使用しました

{{app.request.query.get('year')| default('設定されていない場合のデフォルト値'); }} Quareter Q1

私にお知らせください。

于 2019-01-08T06:03:16.543 に答える