Symfony 指向使用细枝从数据库检索的外部URL的超链接
我使用的是symfony2.0.19。我正在尝试创建一个指向外部URL的超链接,该URL是从数据库检索的 我试过这么做Symfony 指向使用细枝从数据库检索的外部URL的超链接,symfony,doctrine-orm,twig,Symfony,Doctrine Orm,Twig,我使用的是symfony2.0.19。我正在尝试创建一个指向外部URL的超链接,该URL是从数据库检索的 我试过这么做 <td><a href="{{dominio.url}}">{{dominio.url}}</a></td> 但是我得到的路径是基本URL示例“localhost/web/www.tralala.com”中URL的相对路径,而不仅仅是“www.tralala.com” 我如何做到这一点?我建议您构建自己的细枝过滤器 如果您的
<td><a href="{{dominio.url}}">{{dominio.url}}</a></td>
但是我得到的路径是基本URL示例“localhost/web/www.tralala.com”中URL的相对路径,而不仅仅是“www.tralala.com”
我如何做到这一点?我建议您构建自己的细枝过滤器 如果您的url具有
http://
,请不要添加它,否则请添加它
检查如何操作。下面是一个具体的例子,说明皮耶里科夫的建议: 在
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';
}
}
?>
services:
# other services
app.twig.external_link:
class: AppBundle\Twig\ExternalLinkFilter
public: false
tags:
- { name: twig.extension }
现在,您可以简单地使用名为external\u link
的过滤器,就像使用任何细枝的默认过滤器一样,例如:
...
<a href="{{check.hostname | external_link }}"> {{check.hostname}}</a>
...
。。。
...
nbro的symfony 5版本答案为:
(这将处理从数据库读取的所有类型的url)
资料来源:
在src/Twig中创建文件
<?php
namespace App\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
class ExternalLinkFilter extends AbstractExtension
{
public function getFilters()
{
return array(
new TwigFilter('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';
}
}
?>
您不需要将其注册为服务。Symfony 5将注意到该树枝延伸的存在
按照@nbro的建议在细枝模板中使用它
<a href="{{check.hostname | external_link }}"> {{check.hostname}}</a>
replacelocalhost/web/
只要您有该变量dominio.url
。。。当您将其上传到服务器时,只保留dominio.url
并删除替换方法:D否则,编辑.htaccess文件!如果dominio.url只是www.tralala.com,您需要执行