Symmony - 컨트롤러의 매개 변수로 URL을 생성합니다
-
26-12-2019 - |
문제
내 컨트롤러에 직접 URL을 생성하고 싶습니다.매개 변수가 필요한 내 routing.yml 파일에 정의 된 URL을 사용자에게 원합니다.
저는 요리 책 (라운지 섹션)의 코드를 발견했습니다 :
$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
.
그러나 저는 $ 라우터를 참조하는 것에 대해 이해하지 못합니다.분명히 작동하지 않습니다. 컨트롤러에서 매개 변수가있는 라우팅 URL을 생성하는 간단한 방법이 있습니까?
해결책
꽤 간단합니다 :
public function myAction()
{
$url = $this->generateUrl('blog_show', array('slug' => 'my-blog-post'));
}
.
조치 안에, $ this-> generateURL은 라우터를 사용하여 원하는 경로를 얻을 수있는 별칭이며, 이렇게 할 수있는 이렇게 할 수 있습니다.
$this->get('router')->generate('blog_show', array('slug' => 'my-blog-post'));
. 다른 팁
절대 URL을 원하면 세 번째 매개 변수가 있습니다.
$product_url = $this->generateUrl('product_detail',
array(
'slug' => 'slug'
),
UrlGeneratorInterface::ABSOLUTE_URL
);
.
URLGeneratorInterface를 포함시키는 것을 기억하십시오.
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
. 컨테이너에서 라우터를 가져옵니다.
$router = $this->get('router');
.
그런 다음 라우터를 사용하여 URL을 생성합니다
$uri = $router->generate('blog_show', array('slug' => 'my-blog-post'));
. 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']);
제휴하지 않습니다 StackOverflow