关于symfony2的非常简单的问题,但我无法通过搜索找到答案。
我知道我可以通过
获取网址{{ path('fos_user_profile_edit') }}
但我怎样才能在symfony2 php源代码中做同样的事情呢?
提前致谢
答案 0 :(得分:2)
您可以使用router
服务。在控制器中,它可以使用generateUrl
函数
/**
* Generates a URL from the given parameters.
*
* @param string $route The name of the route
* @param mixed $parameters An array of parameters
* @param Boolean $absolute Whether to generate an absolute URL
*
* @return string The generated URL
*/
public function generateUrl($route, $parameters = array(), $absolute = false)
{
return $this->container->get('router')->generate($route, $parameters, $absolute);
}
答案 1 :(得分:1)
在文档中说明了你是如何做到的。 请参阅this文档条目。
如果要生成相对URL,只需使用:
$url = $this->generateUrl('fos_user_profile_edit');
如果你想要生成一个绝对URL,你想要使用它:
$router = $this->container->get('router');
$url = $router->generate('blog_show', array('slug' => 'my-blog-post'), true);
//--------------------true outputs an absolute URL-------------------------/\
// http://www.example.com/blog/my-blog-post
也取自文档here
generate()
- 如前所述 - 需要3个参数。
/blog/{page}
,其中页面应替换为例如1 刚刚提及generateUrl()
因为它等于Twig中的{{ path(...) }}
函数。
答案 2 :(得分:0)
__FILE__
将获取当前文件的绝对路径。
答案 3 :(得分:0)
需要一点点狩猎,但你可以很容易地追踪它。
path
函数添加到Twig的位置:/src/Symfony/Bridge/Twig/Extension/RoutingExtension.php#L39。$this->generator
对象。我们现在知道我们可以致电$this->container->get('router')
来获取generator
方法中使用的getPath
,因此我们的代码最终会看起来像:
$this->container->get('router')->generate($name, $parameters, $relative ? UrlGeneratorInterface::RELATIVE_PATH : UrlGeneratorInterface::ABSOLUTE_PATH);