在 RouteCollection.php 行 219 中获取 MethodNotAllowedHttpException:在 laravel
Getting MethodNotAllowedHttpException in RouteCollection.php line 219: on laravel
我收到上述错误。我试图在其他论坛上阅读有同样问题但没有运气。我的创建、存储和编辑工作正常。但是,在更新我的表单时,我收到了上述错误。有人可以帮我解决这个问题吗?谢谢
{!! Form::model($enrollment['method'=>'POST','route'=>['/enrollment',$enrollment->id],'class'=>'form-horizontal']) !!}
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="_method" value="PUT" id="subject_code">
<option value="{{ $enrollment->subject_code }}">{{ $enrollment->subject_code }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->subject_code }}">{{ $subject->subject_code}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_description" class="col-md-3 control-label">Subject description</label>
<div class="col-md-8">
<select class="form-control" name="subject_description" id="subject_description">
<option value="{{ $enrollment->subject_description }}">{{ $enrollment->subject_description }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->subject_description }}">{{ $subject->subject_description}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="subject_code" id="subject_code">
<option value="{{ $enrollment->section }}">{{ $enrollment->section}}</option>
@foreach($sections as $section)
<option value="{{ $section }}">{{ $section }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="subject_code" id="subject_code">
<option value="{{ $enrollment->schedule }}">{{ $enrollment->schedule }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->schedule }}">{{ $subject->schedule}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="subject_code" id="subject_code">
<option value="{{ $enrollment->no_of_units }}">{{ $enrollment->no_of_units }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->no_of_units }}">{{ $subject->no_of_units}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-7 col-md-offset-3">
<button type="submit" class="btn btn-success">
<i class="fa fa-save"></i>
Save Changes
</button>
<button type="submit" class="btn btn-danger">
<i class="fa fa-times-circle"></i>
Delete
</button>
</div>
</div>
{!! Form::close() !!}
这是我的 EnrollmentController:
public function update(EnrollmentRequest $request, $id)
{
$enrollment = Enrollment::findOrFail($id);
$enrollment->update($request->all());
return redirect('/enrollment');
}
routes.php
// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
Route::resource('enrollment','EnrollmentController');
我认为问题是您的 HTML 有误。在您的第一个 "subject_code" 输入中,您有以下 HTML:
<select class="form-control" name="_method" value="PUT" id="subject_code">
您不小心将此输入命名为 _method
,这是为 Laravel 方法欺骗保留的输入名称。即使您已将值指定为 "PUT",这也不是 selects 的工作方式,并且该值最终会变成别的东西。这会阻止 Laravel 方法欺骗正常工作。由于方法欺骗不起作用,您正在向 enrollment/{id}
发送 POST 请求,并且该路由不允许 POST 请求。
您需要更正此输入,使其不被命名为“_method”:
<select class="form-control" name="subject_code" id="subject_code">
此外,您需要修正您的 Form::model()
语句。它需要带两个参数,第一个是模型,第二个是属性数组。在您的属性数组中,您需要 "method" 为 "PUT"(以便表单构建器自动创建隐藏的“_method”输入),并且您需要 [=28= 中的第一个元素] 数组是路由的名称,而不是 url。更新显示如下:
{!! Form::model($enrollment, ['method' => 'PUT', 'route' => ['enrollment.update', $enrollment->id], 'class' => 'form-horizontal']) !!}
我收到上述错误。我试图在其他论坛上阅读有同样问题但没有运气。我的创建、存储和编辑工作正常。但是,在更新我的表单时,我收到了上述错误。有人可以帮我解决这个问题吗?谢谢
{!! Form::model($enrollment['method'=>'POST','route'=>['/enrollment',$enrollment->id],'class'=>'form-horizontal']) !!}
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="_method" value="PUT" id="subject_code">
<option value="{{ $enrollment->subject_code }}">{{ $enrollment->subject_code }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->subject_code }}">{{ $subject->subject_code}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_description" class="col-md-3 control-label">Subject description</label>
<div class="col-md-8">
<select class="form-control" name="subject_description" id="subject_description">
<option value="{{ $enrollment->subject_description }}">{{ $enrollment->subject_description }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->subject_description }}">{{ $subject->subject_description}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="subject_code" id="subject_code">
<option value="{{ $enrollment->section }}">{{ $enrollment->section}}</option>
@foreach($sections as $section)
<option value="{{ $section }}">{{ $section }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="subject_code" id="subject_code">
<option value="{{ $enrollment->schedule }}">{{ $enrollment->schedule }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->schedule }}">{{ $subject->schedule}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="subject_code" class="col-md-3 control-label">Subject Code</label>
<div class="col-md-8">
<select class="form-control" name="subject_code" id="subject_code">
<option value="{{ $enrollment->no_of_units }}">{{ $enrollment->no_of_units }}</option>
@foreach($subjects as $subject)
<option value="{{ $subject->no_of_units }}">{{ $subject->no_of_units}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-7 col-md-offset-3">
<button type="submit" class="btn btn-success">
<i class="fa fa-save"></i>
Save Changes
</button>
<button type="submit" class="btn btn-danger">
<i class="fa fa-times-circle"></i>
Delete
</button>
</div>
</div>
{!! Form::close() !!}
这是我的 EnrollmentController:
public function update(EnrollmentRequest $request, $id)
{
$enrollment = Enrollment::findOrFail($id);
$enrollment->update($request->all());
return redirect('/enrollment');
}
routes.php
// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
Route::resource('enrollment','EnrollmentController');
我认为问题是您的 HTML 有误。在您的第一个 "subject_code" 输入中,您有以下 HTML:
<select class="form-control" name="_method" value="PUT" id="subject_code">
您不小心将此输入命名为 _method
,这是为 Laravel 方法欺骗保留的输入名称。即使您已将值指定为 "PUT",这也不是 selects 的工作方式,并且该值最终会变成别的东西。这会阻止 Laravel 方法欺骗正常工作。由于方法欺骗不起作用,您正在向 enrollment/{id}
发送 POST 请求,并且该路由不允许 POST 请求。
您需要更正此输入,使其不被命名为“_method”:
<select class="form-control" name="subject_code" id="subject_code">
此外,您需要修正您的 Form::model()
语句。它需要带两个参数,第一个是模型,第二个是属性数组。在您的属性数组中,您需要 "method" 为 "PUT"(以便表单构建器自动创建隐藏的“_method”输入),并且您需要 [=28= 中的第一个元素] 数组是路由的名称,而不是 url。更新显示如下:
{!! Form::model($enrollment, ['method' => 'PUT', 'route' => ['enrollment.update', $enrollment->id], 'class' => 'form-horizontal']) !!}