【发布时间】:2018-02-28 04:39:21
【问题描述】:
有两个变量的路线有问题。 我有一个表格可以删除一个项目。
<form action="/admin/room/{{$room->id}}/image/{{$img->id}}/">
{{method_field('DELETE')}}
{{csrf_field()}}
<input class="btn btn-danger" type="submit" value="Delete">
</form>
点击删除后,我得到一个 MethodNotAllowedHttpException。
这是我的路线文件。
//authenticated users only
Route::group(['middleware' => 'auth'], function ()
{
Route::prefix('admin')->group(function ()
{
/*Some other routes*/
//Matches "/admin/room/{room}/image[s]?"
Route::get('room/{room}/image', 'RoomImagesController@index')
->name('admin.roomimages');
Route::get('room/{room}/image/create','RoomImagesController@create');
Route::post('room/{room}/image','RoomImagesController@store');
Route::delete('room/{room}/image/{image}','RoomImagesContoller@destroy');
//Matches the "/admin/room[s]?" URL
Route::get('/rooms', 'AdminController@rooms');
Route::get('/room/create', 'RoomController@create');
Route::get('/room/{room}', 'RoomController@edit');
Route::post('/room/search','RoomController@search');
Route::post('/room/store', 'RoomController@store');
Route::post('/room/{room}','RoomController@update');
Route::delete('/room/{room}','RoomController@destroy');
/*some more routes.*/
}
}
还有我的 RoomImagesController 类
class RoomImagesController extends Controller
{
/*Other Methods*/
public function destroy(Room $room, RoomImage $image)
{
dd($room, $image);
}
}
我发送到的网址是:
http://domain.name/admin/room/1/image/1?_method=DELETE&_token=/*tokenValue*/
不知道为什么我在这里遇到问题!如果有人能提供一些启示,我将不胜感激。如果您需要更多信息,请告诉我。
编辑
我在表单中添加了 method="post",但出现了同样的错误。这是网页上的原始粘贴。
<form method="post" action="/admin/room/1/image/4/">
<input name="_method" value="DELETE" type="hidden">
<input name="_token" value="lFrYPuzz8pY4EEJZEKCtZgjGM4dkk6uTD3p0jhpK" type="hidden">
<input class="btn btn-danger" value="Delete" type="submit">
</form>
编辑 2
命名路线似乎是一种解决方案!
//web.php
Route::post('room/{room}/image/{image}','RoomImagesContoller@delete')
->name('admin.deleteRoomImages');
//x.blade.php
<form action="{{ route('admin.deleteRoomImages', [
'room' => $room->id,
'image' => $img->id ]) }}/"
method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<input class="btn btn-danger" type="submit" value="Delete">
</form>
但我仍然得到 MethodNotAllowedError
当我运行php artisan route:list 时可能值得注意的是,我发现我得到一个 ReflectionError 'RoomImagesController 不存在'
我会进一步调查!
【问题讨论】:
-
你确定你得到的是
http://domain.name/admin/room/1/image/1?_method=DELETE&_token=/*tokenValue*/url吗? -
这里粘贴(不包括域)
/admin/room/1/image/4?_method=DELETE&_token=lFrYPuzz8pY4EEJZEKCtZgjGM4dkk6uTD3p0jhpK -
尝试将
{{method_field('DELETE')}}改为{{ method_field('delete') }} -
Ashish,我已经这样做了
<input name="_method" value="delete" type="hidden">,没有任何变化。 -
尝试
action="/admin/room/{{$room->id}}/image/{{$img->id}}"删除最后一个slash