为什么url_for('module/action/id/3')不起作用

jdo*_*dog 1 routing symfony1 url-for

我正在使用url_for('module/myaction/id/3')在修改后的管理生成器屏幕中创建链接.每当我做一个新动作并尝试链接到它时url_for ('module/action/id/3'),我明白/module/myaction/action.

当我尝试url_for('module/3/myaction')我得到相同的结果.

但是当我使用时,url_for('module/myaction?id=3')我得到了预期的结果:module/3/myaction

我的路由文件中只有默认的管理员生成的路由规则.

这种行为有望吗?

pro*_*son 6

是的,它是预期的......从某种意义上说,传入外部URL会产生意想不到的结果.

您应该将内部uri传递给url_for内部URI,其形式如下:

@route_name?param=value

moduleName/actionName?param=value

您还可以通过使用路由名称和对象(如果是对象路由或路由集合)分别表示内部URL的参数,在这些情况下它们看起来像:

url_for('route_name', params);

params路由所期望的对象(通常是Doctrine或Propel模型实例)或参数数组在哪里.

然后,路由系统将这些内部URI转换为外部URL.你得到的结果不正确,因为你试图传入外部URL,这没有意义,因为如果你知道网址,那么没有理由去路由它:-)