我有一个变量{{ name }}
,输出治疗&支持即可。我需要删除&符号,并将名称转换为可用的url slug与树枝,例如:治疗支持。
我无法找到正确的树枝装配工。我在看我正在看http://twig.sensiolabs.org/documentation。到目前为止,我所拥有的只是
{{ name |lower }}
重申我需要使用树枝来治疗&使用treatment-support
变量支持{{ name }}
。
感谢任何帮助。
答案 0 :(得分:3)
您可以使用twig replace filter:
{{ name|replace({' & ': '-', '&': '-'}) }}
正如@DarkBee在评论中所说,对于更复杂的事情,你可以使用Slugify
答案 1 :(得分:0)
你可以在drupal8中为twig创建自己的过滤器。
遵循:
http://leopathu.in/content/create-custom-twig-filter-drupal-8
如果不起作用请评论。我已经为我的drupal网站成功创建了一些过滤器。
答案 2 :(得分:0)
您可以创建自定义过滤器,也可以使用@alexf的建议
但是,如果有多个实例,我建议使用自定义过滤器
类似...
<?php
$loader = new Twig_Loader_Filesystem();
$twig = new Twig_Environment($loader);
/**
* Creates slugs from strings
*/
$twig->addFilter(new Twig_Filter('slugify', function( $string = '' ) {
if( !$string ){
return $string;
}
if( !is_string( $string ) ){
throw new Exception('Only strings can be slugified.' );
}
//lowercase the whole string
$slug = strtolower($string);
//create an array of all the words/characters
$slug_array = explode( ' ', $slug );
//replace all special characters with empty strings
array_walk( $slug_array, function( &$item, $key ){
$item = preg_replace('/[^a-z0-9]/', '', $item );
return $item;
});
//remove empty items from the array
$slug_array = array_filter( $slug_array );
//reconstruct the string
$slug = join( '-', $slug_array );
return $slug;
}));
然后您可以像这样使用它
<p>{{ 'Treatment & Support'|slugify }}</p>
<p>{{ 'Heres a sentence with 2 numbers 8o'|slugify }}</p>
<p>{{ 'Hello World!'|slugify }}</p>
这将产生以下输出
treatment-support
heres-a-sentence-with-2-numbers-8o
hello-world