RouteCollection.php 行 218:4 中的 MethodNotAllowedHttpException
MethodNotAllowedHttpException in RouteCollection.php line 218:4
我在 laravel
中提交表单时会收到 MethodNotAllowedHttpException
Html 文件
<form method="POST" action="/cards/{{$card->id}}/notes">
<input name="_token" type="hidden" value="{{ csrf_token() }}"/>
<textarea name="body" class="form-control"></textarea>
<button type="submit">Add Note</button>
</form>
routes.php
Route::post('cards/{card}/notes','NotesController@store');
NotesController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class NotesController extends Controller
{
public function store()
{
return request()->all();
}
}
确保你没有路线,比如 Route::post
参数位于你要到达的路线前面。
例如:
Route::post('{something}', 'SomethingController@index');
Route::post('cards/{card}/notes', 'NotesController@store');
在这种情况下,无论您尝试向 cards 路由发送什么,它总是会到达 something
路由,因为 {something}
正在拦截 cards
作为有效参数并且触发 SomethingController
。
将 something
路由放在 cards 路由下方,它应该可以工作。
MethodNotAllowedHttpException
没有找到匹配的路由(方法和URI),但是找到了匹配URI但不匹配方法的路由。
在你的情况下,我猜问题是因为 URI 参数在路由和控制器之间不同。
您可以尝试以下两种选择:
- 从您的路线中删除参数:
Route::post('cards/notes','NotesController@store');
- 将参数添加到您的控制器:
public function store($card)
{
return request()->all();
}
我已经尝试解决 lumen 中的这个错误,但我花了很多时间才弄清楚这个问题。
问题出在 laravel 本身。
Sometimes if you have another route like GET device/{variable}, laravel stops in this first route...
所以您需要做的是将路线 POST device
更改为 POST device/add
我在 laravel
中提交表单时会收到 MethodNotAllowedHttpExceptionHtml 文件
<form method="POST" action="/cards/{{$card->id}}/notes">
<input name="_token" type="hidden" value="{{ csrf_token() }}"/>
<textarea name="body" class="form-control"></textarea>
<button type="submit">Add Note</button>
</form>
routes.php
Route::post('cards/{card}/notes','NotesController@store');
NotesController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class NotesController extends Controller
{
public function store()
{
return request()->all();
}
}
确保你没有路线,比如 Route::post
参数位于你要到达的路线前面。
例如:
Route::post('{something}', 'SomethingController@index');
Route::post('cards/{card}/notes', 'NotesController@store');
在这种情况下,无论您尝试向 cards 路由发送什么,它总是会到达 something
路由,因为 {something}
正在拦截 cards
作为有效参数并且触发 SomethingController
。
将 something
路由放在 cards 路由下方,它应该可以工作。
MethodNotAllowedHttpException
没有找到匹配的路由(方法和URI),但是找到了匹配URI但不匹配方法的路由。
在你的情况下,我猜问题是因为 URI 参数在路由和控制器之间不同。
您可以尝试以下两种选择:
- 从您的路线中删除参数:
Route::post('cards/notes','NotesController@store');
- 将参数添加到您的控制器:
public function store($card) { return request()->all(); }
我已经尝试解决 lumen 中的这个错误,但我花了很多时间才弄清楚这个问题。 问题出在 laravel 本身。
Sometimes if you have another route like GET device/{variable}, laravel stops in this first route...
所以您需要做的是将路线 POST device
更改为 POST device/add