Symfony 2相当于Symfony 1中的url_for()函数
symfony 2 equivalent for url_for() function in symfony 1
在Symfony 1中,我们可以访问模板页面中的操作,例如url_for('modulename/actionname')
,而无需在routing.yml中写入任何内容。
这在Symfony2中是如何实现的?也就是说,我必须在没有指定路由的情况下访问一个分支中的多个操作。这在使用ajax时非常有用。
Thanks in advance
如果我正确理解你的问题,你问你如何通过传递模块名称和操作名称来生成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现在使用捆绑包,这会使问题进一步复杂化。
所以对于你想要访问的任何操作,你都需要为它们编写路由。
为了实际生成url…
—控制器:$this->generateUrl($routeName);
-来自PHP模板:$view['router']->generate($routeName);
-从Twig模板:{{ path('_routeName') }}
或{{ url('_routeName') }}
的绝对URL
除了Arms的话,这里有几个例子(带参数):
假设我们的路由是:
#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>
希望这对你有帮助。欢呼。
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Is onfling available for html, html5
- Setting default onclick behavior for <img> tag in gene
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- Javascript setTimeout for an array
- 双“for”循环(循环)
- 引用vue.js中v-for中的上一个值
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- GWT (or javascript) library for couchDB
- Javascript在for循环中等待处理请求
- Livereload for node.js.有可能吗
- jQuery setTimeOut: in for-loop
- 我没有'I don’我不理解for在循环中的用途
- 如何知道javascript for语句中的所有结果是否都是错误的
- For循环在Jquery中只运行一次
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法