web-dev-qa-db-ja.com

views-view-fields.html.twigの現在のURLからパラメーター値を取得する方法は?

テーマテンプレートの引数値が必要で、views-views-fields--view_name--block_1.jhtml.twig


私は現在、そのような現在のURLを取得しています:

{% set url = url('current')%}

どの出力:

https://example.com/questions/12225

しかし、現在のURLの12225値のみが必要です。 Twigの現在のURLから最後のパラメーターを取得するにはどうすればよいですか?

5
Narinder Bajwa

Twigの split フィルターを使用することもできますが、テンプレート内でスクリプトを作成しすぎることはお勧めしません。

代わりに、値をTwigに渡して、テーマまたはカスタムモジュール内のプリプロセス関数から template_preprocess_views_view_fields

/**
 * Implements template_preprocess_views_view_fields().
 */
function MYTHEME/MYMODULE_preprocess_views_view_fields(&$variables) {

  // Retrieve an array which contains the path pieces.
  $current_path = \Drupal::service('path.current')->getPath();

  if ($current_path[0] == 'questions') {
    $variables['question_id'] = $current_path[1];
  }
}

そして、あなたのテンプレートの中にそれを例えば次のように印刷してください:

{% if question_id %}
  <div id="{{ question_id }}">Question ID: {{ question_id }}</div>
{% endif %}
7
leymannx

私はそれが最善の方法であるかどうかはわかりませんが、あなたを助けることができます{%set url = url( 'current>')%}を使用していますダンプ後、それは

array(3) { 
         ["#markup"]=>
                 string(23) "http://example.com/category" ["#cache"]=> array(3) { 
      ["contexts"]=> array(2) { [0]=> string(5) "route" [1]=>string(8) 
            "url.site" } ["tags"]=> array(0) { } ["max-age"]=> int(-1) } 
        ["#attached"]=> array(0) { } }

配列を文字列に変換する

{% set url = url('current>')['#markup'] %}

{{ url|split('/')|last }}

あなたはurlから最後の値を取得します

5
Manmeet Khurana

私もurlパラメータを取得しようとしましたが、現在のパスはパラメータなしのパスのみを返していました。

次の解決策は、ページの前処理機能で私のために機能しました、私はビューフィールドで試していませんが、それも機能するはずです。

function yourtheme_preprocess_views_view_fields(&$variables) {

  // Retrieve an array which contains the path parameters.
  $variables['params']['parameter_name'] = $_GET['parameter_name'];
}
0
tmsss