我正在使用工艺cms,它使用twig模板,并希望从字符串中获取单词数。我尝试过使用PHP函数str_word_count()
:
{% for entry in entries %}
<a href="{{ entry.url }}">
<div class="media-object">
<div class="small-4 columns">
<div class="media-object-section">
<img src= "{{ entry.topImage.first().getUrl('square') }}">
</div>
</div>
<div class="small-8 columns">
<div class="media-object-section main-section">
<h4>{{ entry.title }}</h4>
{% set numberOfWords = str_word_count(entry.summary) %}
<p>{{ entry.summary |split(" ")|slice(0, 15)|join(" ") }}</p>
<p>{{ entry.dateUpdated | date('j. F Y') }}</p>
</div>
</div>
</div>
</a>
{% endfor %}
但是,我收到了一个错误:
未知“str_word_count”功能。
如何从树枝模板中获取字符串中的单词数?
答案 0 :(得分:2)
你可以这样做:
{% set numberOfWords = entry.summary|split(' ')|length %}
答案 1 :(得分:1)
制作自定义扩展并使用其中的任何PHP函数:https://symfony.com/doc/current/templating/twig_extension.html
答案 2 :(得分:0)
好吧,正如托马斯(Tomas)所建议的, 我为这种情况编写了自己的嫩枝(过滤器)功能:
<?php
namespace AppBundle\TwigExtensions;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Twig\TwigFilter;
class TwigExtensions extends \Twig_Extension
{
/**
* this is needed
*
* @return string
*/
public function getName()
{
return 'your_twig_extensions';
}
/**
*
* @return array
*/
public function getFunctions()
{
return array();
}
/**
*
*
* @return array
*/
public function getFilters()
{
return array(
new \Twig_SimpleFilter('strWordCount', array($this, 'strWordCount')),
);
}
/**
* count Words in string
*
* @return string
*/
public function strWordCount($text = null)
{
return str_word_count($text);
}
}