使用TWIG从数据库检索的外部URL的超链接

Spl*_*nia 4 symfony doctrine-orm twig

我正在使用Symfony 2.0.19.我正在尝试创建一个指向外部URL的超链接,该外部URL是从数据库中检索的.

我试过这样做

<td><a href="{{dominio.url}}">{{dominio.url}}</a></td>
Run Code Online (Sandbox Code Playgroud)

但我获得的路径是基本URL示例"localhost/web/www.tralalalala.com" 的URL 的相对路径,而不仅仅是"www.tralalalala.com".

我该怎么做呢?

nbr*_*bro 8

以下是Pierrickou建议的一个具体例子:

在下面创建一个Twig扩展或过滤器src/Twig,然后调用它ExternalLinkFilter.按如下方式定义类:

<?php 

namespace AppBundle\Twig;

class ExternalLinkFilter extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('external_link', array($this, 'externalLinkFilter')),
        );
    }

    /* source: http://stackoverflow.com/a/2762083/3924118 */
    public function externalLinkFilter($url)
    {
        if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
            $url = "http://" . $url;
        }

        return $url;
    }

    public function getName()
    {
        return 'external_link_filter';
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

现在,您应该将此类注册为服务,config/services.yml如下所示:

services:

    # other services

    app.twig.external_link:
        class: AppBundle\Twig\ExternalLinkFilter
        public: false
        tags:
            - { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)

现在你可以简单地使用被调用的过滤器,external_link因为你可以使用任何Twig的默认过滤器,例如:

...

<a href="{{check.hostname | external_link }}"> {{check.hostname}}</a>

...
Run Code Online (Sandbox Code Playgroud)


Pie*_*ouw 3

我建议您构建自己的 Twig 过滤器。

如果您的网址已经有http://,请不要添加它,否则,请添加它。

在此处查看操作方法。