web-dev-qa-db-fra.com

Comment obtenir une valeur de paramètre à partir de l'URL actuelle dans views-view-fields.html.twig?

J'ai besoin de la valeur d'argument dans les modèles de thème et en utilisant le views-views-fields--view_name--block_1.jhtml.twig.


Je reçois actuellement l'URL actuelle comme ça:

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

Quelles sorties:

https://example.com/questions/12225

Mais je n'ai besoin que de la valeur 12225 de l'url actuelle. Comment puis-je obtenir le dernier paramètre de l'URL actuelle dans Twig?

5
Narinder Bajwa

Vous pouvez utiliser le filtre split de Twig, bien que je ne recommande pas trop de scripts à l'intérieur des modèles.

Au lieu de cela, je recommande de passer la valeur à Twig à partir d'une fonction de prétraitement à l'intérieur de votre thème ou d'un module personnalisé via 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];
  }
}

Et puis à l'intérieur de votre modèle, imprimez-le par exemple comme ceci:

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

Je ne sais pas si c'est la meilleure façon ou non mais peut vous aider Vous utilisez le {% set url = url ('current>')%} Après le vidage, il s'est avéré que c'est ce que

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) { } }

Convertir le tableau en piqûre

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

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

vous obtiendrez la dernière valeur de theurl

5
Manmeet Khurana

J'essayais également d'obtenir les paramètres d'URL, mais le chemin actuel renvoyait uniquement le chemin sans les paramètres.

La solution suivante a fonctionné pour moi dans une fonction de prétraitement de page, je n'ai pas essayé avec les champs de vues mais cela devrait aussi fonctionner.

function yourtheme_preprocess_views_view_fields(&$variables) {

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