Ant*_*ieb 7 php symfony symfony-routing
所以在routing.yml中我定义了以下路由以编辑和删除特定设置:
routing.yml中:
settings.editDefaults:
path: settings/{id}/defaults/edit/{widgetType}
defaults: { _controller: AppBundle:Settings:editDefaults }
methods: [POST, PUT]
settings.deleteDefaults:
path: settings/{id}/defaults/delete/{widgetType}
defaults: { _controller: AppBundle:Settings:deleteDefaults }
methods: [DELETE]
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我定义了正确的操作: SettingController.php:
/**
* edit the default settings of a hotel/widget
*/
public function editDefaultsAction(Request $request)
{
//Edit logic
}
/**
* delete a default setting of a hotel/widget
*/
public function deleteDefaultsAction($hotelId, $widgetType)
{
//Delete logic
}
Run Code Online (Sandbox Code Playgroud)
在第二个动作,我只需要id和widgetType经过这样我就可以查询和删除选定的记录.
当我去任何一条路线时,我得到以下内容:
编辑路线错误:
找不到"GET/settings/2b2acd55-0dd6-11e5-8107-621ae3320fd4/defaults/edit/default"的路由:不允许的方法(允许:POST,PUT)
删除路线错误:
找不到"GET/settings/2b2acd55-0dd6-11e5-8107-621ae3320fd4/defaults/delete/default"的路由:不允许的方法(允许:DELETE)
但当我删除一个并离开另一个他们工作正常.我假设它的路径定义相似吗?我可以保持相同的路径而不会出现此错误吗?我不明白的是什么?
感谢你的帮助,Anth
您只允许 POST、PUT 和 DELETE 方法,但您通过 GET 方法访问这些路由。
所以像这样定义你的路线:
settings.editDefaults:
path: settings/{id}/defaults/edit/{widgetType}
defaults: { _controller: AppBundle:Settings:editDefaults }
settings.deleteDefaults:
path: settings/{id}/defaults/delete/{widgetType}
defaults: { _controller: AppBundle:Settings:deleteDefaults }
Run Code Online (Sandbox Code Playgroud)
或者,如果您确实需要这些限制,则保留 DELETE、PUT 和 POST 方法并添加 GET 方法。
当您使用浏览器访问 URL 时,通常会通过 GET 方法发送请求。您可以阅读有关这些的更多信息: 此处 和此处
| 归档时间: |
|
| 查看次数: |
17991 次 |
| 最近记录: |