解决方案 #1你可以添加一个 if 子句
{% if BasePath == 'post.' %}
{{ url(BasePath~'view', {'post_id':post.postId}) }}
{% elseif BasePath == 'post.current_' %}
{{ url(BasePath~'view') }}
{% endif %}
也许不是最优雅的,但应该可以。
解决方案#2
用问号分割 url 并获取第一个字符串
{% set myUrl = url(basePath~'view', {'post_id':post.postId}) %}
{{ myUrl|split("?")|first }}
解决方案#3或者您可以通过扩展 twig 的 RoutingExtension 类来覆盖 url 函数。
Symfony\Bridge\Twig\Extension\RoutingExtension
可以在这里找到一个例子,path
但url
应该是一样的。
您应该覆盖此功能
public function getUrl($name, $parameters = array(), $schemeRelative = false)
{
return $this->generator->generate($name, $parameters, $schemeRelative ? UrlGeneratorInterface::NETWORK_PATH : UrlGeneratorInterface::ABSOLUTE_URL);
}
您的函数可能如下所示:
public function getUrl($name, $parameters = array(), $schemeRelative = false)
{
$yourUrl = parent::getUrl($name, $parameters = array(), $schemeRelative = false);
return strstr($yourUrl, '?' , true);
}
它删除了问号之后的所有内容。
要覆盖默认类,您必须添加到参数
twig.extension.routing.class: MyNamespace\MyRoutingExtension