在Symfony 1中,我們可以在模板頁面中訪問一個動作,例如url_for('modulename/actionname')
,而不用在routing.yml中寫任何東西。symfony中的url_for()函數的symfony 2等效1
如何在Symfony2的?這是可能的,也就是說,如果我有一個樹枝訪問多於一個動作沒有routing.this指定在使用AJAX是非常有用的。
在此先感謝
在Symfony 1中,我們可以在模板頁面中訪問一個動作,例如url_for('modulename/actionname')
,而不用在routing.yml中寫任何東西。symfony中的url_for()函數的symfony 2等效1
如何在Symfony2的?這是可能的,也就是說,如果我有一個樹枝訪問多於一個動作沒有routing.this指定在使用AJAX是非常有用的。
在此先感謝
如果我正確理解你的問題,你問如何你可以通過一個模塊名稱和動作名稱產生的,而不是路由名稱的URL。是對的嗎?
我不認爲在Symfony2中這是可能的。如果你看看Symfony\Component\Routing\Generator\UrlGenerator
中的generate
方法,你會發現它需要路由的名字作爲第一個參數。此外,Symfony2本身不支持symfony 1所做的通用路由(如下所示,以供參考)。
default_index:
url: /:module
param: { action: index }
default:
url: /:module/:action/*
沒有這些通用的路由,你不能簡單地訪問/ Mymodule中/ myAction而不實際定義它的路線。不要忘記,Symfony2現在使用bundle,這會進一步複雜化。因此,對於您要訪問的任何行動
,你需要編寫路由他們。
爲了實際生成的網址...
- 從控制器:$this->generateUrl($routeName);
- 從PHP模板:$view['router']->generate($routeName);
- 從細枝模板:{{ path('_routeName') }}
或{{ url('_routeName') }}
了絕對URL
此外,以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",
));
從任何的樹枝模板:
<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>
希望它有幫助。
乾杯。
感謝您u'r偉大的答案。 –