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

时间:2011-07-06 23:08:29

标签: symfony1 routing 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

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

预计会出现这种情况吗?

1 个答案:

答案 0 :(得分: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,这没有意义,因为如果你知道网址,那么没有理由去路由它: - )