如何在symfony2 php中获取'path'

时间:2013-06-15 16:51:53

标签: symfony

关于symfony2的非常简单的问题,但我无法通过搜索找到答案。

我知道我可以通过

获取网址
{{ path('fos_user_profile_edit') }}

但我怎样才能在symfony2 php源代码中做同样的事情呢?

提前致谢

4 个答案:

答案 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
  • 布尔值true / false生成的URL是否应该是绝对的

刚刚提及generateUrl()因为它等于Twig中的{{ path(...) }}函数。

答案 2 :(得分:0)

__FILE__

将获取当前文件的绝对路径。

答案 3 :(得分:0)

需要一点点狩猎,但你可以很容易地追踪它。

  1. 找到将path函数添加到Twig的位置:/src/Symfony/Bridge/Twig/Extension/RoutingExtension.php#L39
  2. 检查getPath功能。注意它使用了与构造函数一起传入的$this->generator对象。
  3. 查找加载此扩展程序的位置:/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml#L81
  4. 我们现在知道我们可以致电$this->container->get('router')来获取generator方法中使用的getPath,因此我们的代码最终会看起来像:

    $this->container->get('router')->generate($name, $parameters, $relative ? UrlGeneratorInterface::RELATIVE_PATH : UrlGeneratorInterface::ABSOLUTE_PATH);