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".
我该怎么做呢?
以下是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)
归档时间: |
|
查看次数: |
3071 次 |
最近记录: |