Reputation: 1621
I am creating a basic crud to get familiarized with how Laravel functions, and I have the view, edit, delete, index working smooth however when I attempt to "create" I get the following error on submission.
methodnotallowedhttpexception
Any idea why I would be getting this? Please let me know if you need any additional code snips.
Here is my blade template for create.
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Add a Lead</h3>
</div>
<div class="panel-body">
<div class="table-container">
<form method="POST" action="{{ url('leads/create') }}" role="form">
{{ csrf_field() }}
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<input type="text" name="first_name" id="first_name" class="form-control input-sm" placeholder="First Name">
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<input type="text" name="last_name" id="last_name" class="form-control input-sm" placeholder="Last Name">
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<input type="text" name="primary_phone" id="primary_phone" class="form-control input-sm" placeholder="Primary Phone #">
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<input type="text" name="source" id="source" class="form-control input-sm" placeholder="Lead Source">
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<input type="submit" value="Save" class="btn btn-success btn-block">
</div>
</form>
</div>
</div>
</div>
</div>
Here is my php artisan route:list
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | home | home | App\Http\Controllers\HomeController@index | web,auth |
| | POST | leads | leads.store | App\Http\Controllers\LeadsController@store | web |
| | GET|HEAD | leads | leads.index | App\Http\Controllers\LeadsController@index | web |
| | GET|HEAD | leads/create | | Closure | web |
| | GET|HEAD | leads/index | | Closure | web |
| | PUT|PATCH | leads/{lead} | leads.update | App\Http\Controllers\LeadsController@update | web |
| | GET|HEAD | leads/{lead} | leads.show | App\Http\Controllers\LeadsController@show | web |
| | DELETE | leads/{lead} | leads.destroy | App\Http\Controllers\LeadsController@destroy | web |
| | GET|HEAD | leads/{lead}/edit | leads.edit | App\Http\Controllers\LeadsController@edit | web |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
| | GET|HEAD | splash | | Closure | web |
| | GET|HEAD | users | | Closure | web |
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
Bonus Question: How do I add auth
as middleware to my leads controller so that a user must be logged in to view it?
My routes defined in web.php
are the following.
// Leads
Route::resource('leads','LeadsController');
Route::get('leads/index', function () { return view('leads.index'); });
Route::get('leads/create', function () { return view('leads.create'); });
Upvotes: 0
Views: 381
Reputation:
Your form submits a post request, while your leads/create
route is registered as a GET
route. so either make your form method="get"
or register your route as post i.e. Route::post('leads/create', function(){ /* do something here*/ });
Upvotes: 2
Reputation: 11
The method of your form is a POST request, however in your routes you only have a get request for the url 'leads/create'.
GET|HEAD | leads/create
Creating a POST route should fix it.
Upvotes: 1