2011-11-04 4 views
6

Symfony 1에서는 routing.yml에 아무 것도 쓰지 않고 예제 페이지 url_for('modulename/actionname')과 같은 템플릿 페이지의 액션에 액세스 할 수 있습니다.symfony 2는 symfony 1의 url_for() 함수와 같습니다.

Symfony2에서 어떻게 가능합니까? 즉, 라우팅에서 지정하지 않고 나뭇 가지에서 하나 이상의 작업에 액세스해야하는 경우입니다. 이것은 ajax를 사용하는 동안 유용합니다. 사전에

덕분에 내가 대신 경로 이름으로, 모듈 이름과 액션 이름을 전달하여 URL을 생성 할 수있는 방법이 요구하는지, 제대로 질문을 이해

답변

3

합니다. 그게 맞습니까?

Symfony2에서는 이것이 가능하지 않다고 생각합니다. generate 메서드를 Symfony\Component\Routing\Generator\UrlGenerator에서 살펴보면 경로 이름이 첫 번째 매개 변수로 필요함을 알 수 있습니다. 또한 Symfony2는 symfony 1이 수행하는 일반 경로를 기본적으로 지원하지 않습니다 (아래 참조).

default_index: 
    url: /:module 
    param: { action: index } 

default: 
    url: /:module/:action/* 

이러한 일반 경로가 없으면 실제 경로를 정의하지 않고/myModule/myAction에 액세스 할 수 없습니다. Symfony2가 이제는 번들을 사용한다는 사실을 잊어서는 안됩니다.

액세스하려는 모든 작업에 대해 경로를 작성해야합니다.

실제로 URL을 생성하기 위해

...
- 컨트롤러에서 : - : $view['router']->generate($routeName);
- 나뭇 가지 템플릿에서 : {{ path('_routeName') }} 또는 {{ url('_routeName') }} 절대 URL

+0

위대한 답변을 주셔서 감사합니다. –

1

위한 PHP 템플릿에서 $this->generateUrl($routeName);
또한 Arms' words로, 여기 (매개 변수) 몇 가지 예입니다

:

하는의 우리의 경로가 있다고 가정 해 봅시다

#routing.yml 
acme_demo_page: 
    path: /{page}.{_format} 
    defaults: 
    _controller: AcmeDemoBundle:Page:index 
다음과 같이 우리는이 라우팅에 대한 URL을 생성 할 수 있습니다

:

$url = $view['router']->generate("acme_demo_page", array(
    "page" => "main", 
    "_format" => "html", 
)); 

어떤 PHP 템플릿에서 :

$url = $this->generateUrl("acme_demo_page", array(
    "page" => "main", 
    "_format" => "html", 
)); 

어떤 컨트롤러의 액션에서

모든 꼬마 (Twig) 템플릿에서 :

<a href="{{ path('acme_demo_page', {page:'main', _format:'html'}) }}">Home</a> 
<a href="{{ url('acme_demo_page', {page:'main', _format:'html'}) }}">Abs Home</a> 


는 도움이되기를 바랍니다.
건배.

관련 문제