Getting MethodNotAllowedHttpException in RouteCollection.php line 219: on laravel -
im getting errors above. tried read on other forums same problem no luck. create, store , edit working. when updating form im getting error above. can me on this. thanks
{!! 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 $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 $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 $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 $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 $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() !!}
here's 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');
i think issue have mistake in html. in first "subject_code" input, have following html:
<select class="form-control" name="_method" value="put" id="subject_code">
you've accidentally named input _method
, reserved input name laravel method spoofing. though you've assigned value "put", not how selects work, , value end being else. preventing laravel method spoofing working correctly. since method spoofing not working, you're sending post request enrollment/{id}
, , route not allow post requests.
you need correct input not named "_method":
<select class="form-control" name="subject_code" id="subject_code">
additionally, need fix form::model()
statement. needs take 2 parameters, first model, , second array of attributes. in array of attributes, need "method" "put" (so form builder automatically create hidden "_method" input), , need first element in "route" array name of route, not url. updates shown below:
{!! form::model($enrollment, ['method' => 'put', 'route' => ['enrollment.update', $enrollment->id], 'class' => 'form-horizontal']) !!}
Comments
Post a Comment