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?
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 %}
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
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'];
}