仅在树枝中显示 # 个字符

  • 本文关键字:字符 显示 twig
  • 更新时间 :
  • 英文 :


我对树枝很不熟悉。这是我所拥有的:

{% if wp.get_post_meta(post.ID, '_property_website').0 %}
<tr>
    <th>{{ wp.__('Website', 'aviators') }}:</th>
        <td><a href="http://{{ wp.get_post_meta(post.ID, '_property_website').0 }}">{{ wp.get_post_meta(post.ID, '_property_website').0 }}</a>
        </td>
</tr>
{% endif %}

我需要将此输出限制为 35 个字符而不会终止链接。它需要仍然处于活动状态,但只显示 35 个字符,而且理想情况下它会以......指定 URL 被切断,但这是一个奖励。谁能帮忙?

我相信 http://twig.sensiolabs.org/doc/filters/slice.html 就是你要找的

编辑

刚刚发现Twig有一个名为text扩展名,它包含wordwrap过滤器,这正是您正在寻找的

链接: https://github.com/fabpot/Twig-extensions/blob/master/lib/Twig/Extensions/Extension/Text.php

您可以制作自己的 Twig 扩展。这很容易。

首先,您必须使用过滤器代码创建文件:

<?php
//Acme/AcmeBundle/Twig/AnExtension.php
namespace AcmeAcmeBundleTwig;
class AnExtension extends Twig_Extension
{
    public function getFilters()
    {
        return array(
                new Twig_SimpleFilter('cutText', array($this, 'cutTextFilter'))
        );
    }
    public function cutTextFilter($text, $size = 50)
    {
        if (strlen($text) > $size)
        {
            return substr($text, 0, $size) . '...';
        }
        else
        {
            return $text;
        }
    }
    public function getName()
    {
        return 'an_extension';
    }
}

然后编辑此捆绑包中的 services.yml 文件,该文件位于:/Acme/AcmeBundle/Resources/config/services.yml 并添加:

services:
    acme.twig.an_extension:
        class: AcmeAcmeBundleTwigAnExtension
        tags:
            - { name: twig.extension }

现在,您可以在代码中使用过滤器:

<a href="http://{{ wp.get_post_meta(post.ID, '_property_website').0 }}">
    {{ wp.get_post_meta(post.ID, '_property_website').0 | cutText(30) }}
</a>

更多信息: http://symfony.com/doc/current/cookbook/templating/twig_extension.html

最新更新