我的页面的URI为/importBundle/96/iTunes
,其中96
是导入包的ID。当我在浏览器中导航到此页面时,它可以正常工作。但是,当我提交表单(提交回同一页面)时,我得到“Action”importBundle / 96“不存在”,这是绝对正确的,但这不是我要告诉它的地方。当我收到此错误时,我仍然会在地址栏中看到/importBundle/96/iTunes
。
知道为什么会这样吗?
(我正在使用symfony 1.4。)
编辑:这是我在routing.yml中的内容:
import_bundle:
class: sfDoctrineRouteCollection
options:
model: ImportBundle
module: importBundle
prefix_path: /importBundle
column: id
with_wildcard_routes: true
这是我的开场<form>
标签:
<form action="<?php echo url_for('importBundle/iTunes?id='.$import_bundle->getId()) ?>" method="post" enctype="multipart/form-data">
编辑2 :以下是我尝试添加sf_method
的方式:
import_bundle:
class: sfDoctrineRouteCollection
options:
model: ImportBundle
module: importBundle
prefix_path: /importBundle
column: id
with_wildcard_routes: true
requirements:
sf_method: [get,post]
它不起作用。我做错了吗?我这样做的方式似乎与the docs一致,所以我很困惑。
答案 0 :(得分:1)
我最终只为这一页创建了一个全新的路由规则。不是很酷的事情,但它有效。
import_bundle_itunes:
class: sfDoctrineRoute
url: /iTunes/:id
options: { model: ImportBundle, type: object }
param: { module: importBundle, action: iTunes }
requirements:
id: \d+
sf_method: [get,post]
答案 1 :(得分:0)
您可能正在使用post方法提交表单,并且仅针对get方法配置了相关路由。然后,symfony回退到默认的/:module /:action / * route,显然找不到“importBundle / 96”。
如果您发布到同一页面,则应该为get和post方法配置url。
url_name:
requirements:
sf_method: [get,post]
答案 2 :(得分:0)
您需要使用sfRequestRoute类。请参阅Configuring a route in Symfony with the same URL but different HTTP methods and controller actions
中接受的答案