我想直接在我的控制器中生成一个Url.我想使用我的routing.yml文件中定义的需要参数的URL.
我在Cookbook(Routage部分)中找到了代码:
$params = $router->match('/blog/my-blog-post');
// array('slug' => 'my-blog-post', '_controller' => 'AcmeBlogBundle:Blog:show')
$uri = $router->generate('blog_show', array('slug' => 'my-blog-post'));
// /blog/my-blog-post
Run Code Online (Sandbox Code Playgroud)
但我不明白什么是$ router.显然,它不起作用.有一种简单的方法可以在控制器中生成带有参数的路由URL吗?
Syb*_*bio 109
这很简单:
public function myAction()
{
$url = $this->generateUrl('blog_show', array('slug' => 'my-blog-post'));
}
Run Code Online (Sandbox Code Playgroud)
在一个动作中,$ this-> generateUrl是一个别名,它将使用路由器来获取所需的路由,你也可以这样做:
$this->get('router')->generate('blog_show', array('slug' => 'my-blog-post'));
Run Code Online (Sandbox Code Playgroud)
Ped*_*ado 18
如果你想要绝对的网址,你有第三个参数.
$product_url = $this->generateUrl('product_detail',
array(
'slug' => 'slug'
),
UrlGeneratorInterface::ABSOLUTE_URL
);
Run Code Online (Sandbox Code Playgroud)
请记住包含UrlGeneratorInterface.
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
Run Code Online (Sandbox Code Playgroud)
Jon*_*ley 13
从容器中获取路由器.
$router = $this->get('router');
Run Code Online (Sandbox Code Playgroud)
然后使用路由器生成Url
$uri = $router->generate('blog_show', array('slug' => 'my-blog-post'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112498 次 |
| 最近记录: |