Symfony - generate url with parameter in controller

后端 未结 4 1962
花落未央
花落未央 2021-02-01 01:00

I want to generate a Url directly in my controller. I want to user a url defined in my routing.yml file that needs a parameter.

I\'ve found that code in the Cookbook (Ro

相关标签:
4条回答
  • 2021-02-01 01:12

    Get the router from the container.

    $router = $this->get('router');
    

    Then use the router to generate the Url

    $uri = $router->generate('blog_show', array('slug' => 'my-blog-post'));
    
    0 讨论(0)
  • 2021-02-01 01:16

    If you want absolute urls, you have the third parameter.

    $product_url = $this->generateUrl('product_detail', 
        array(
            'slug' => 'slug'
        ),
        UrlGeneratorInterface::ABSOLUTE_URL
    );
    

    Remember to include UrlGeneratorInterface.

    use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
    
    0 讨论(0)
  • 2021-02-01 01:20

    It's pretty simple :

    public function myAction()
    {
        $url = $this->generateUrl('blog_show', array('slug' => 'my-blog-post'));
    }
    

    Inside an action, $this->generateUrl is an alias that will use the router to get the wanted route, also you could do this that is the same :

    $this->get('router')->generate('blog_show', array('slug' => 'my-blog-post'));
    
    0 讨论(0)
  • 2021-02-01 01:21

    make sure your controller extends Symfony\Bundle\FrameworkBundle\Controller\Controller;

    you should also check app/console debug:router in terminal to see what name symfony has named the route

    in my case it used a minus instead of an underscore

    i.e blog-show

    $uri = $this->generateUrl('blog-show', ['slug' => 'my-blog-post']);
    
    0 讨论(0)
提交回复
热议问题