Laravel中的post方法给出MethodNotAllowedHttpException
Html代码
<form action="newslatter" method="post">
<input type="text" name="name">
<br>
<br>
<input type="email"name="email">
<br>
<br>
<input type="submit">
和控制器代码
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class newsletter extends Controller
{
public function store(Request $request)
{
return $request -> name .' '. $request -> email;
}
和路线
Route::POST('Newslatter','newsletter@store');
我的代码有什么问题?
错误的图片
答案 0 :(得分:6)
将路线中的Newslatter
更改为newslatter
以使其正常工作:
Route::post('newslatter', 'newsletter@store');
另外,在表单中添加CSRF field:
<form action="newslatter" method="post">
{{ csrf_field() }}
在Laravel 5.6+中:
<form action="newslatter" method="post">
@csrf
答案 1 :(得分:3)
我认为这个问题是因为
而发生的<form action="newslatter" method="post">
请尝试
<form action="{{ route('route-name') }}"> metho="post">
{{ csrf_field() }}
和
Route::post('/newslatter', 'ControllerName@methodName')->name('route-name');
答案 2 :(得分:0)
为什么不使用laravel食谱,他们很酷
{{ Form::model($role, array('route' => array('roles.update', $role->id), 'method' => 'PUT', 'class'=>"form-horizontal form-label-left","novalidate"=>'true')) }}
声明从后端传递$ roles变量的表单并为您生成csrf_field(解决上述问题)。
也在表单
内{ Form::text('name', null, array('class' => 'form-control col-md-7 col-xs-12','required'=>'required','id'=>"name")) }}
在传递的$ user对象中显示name属性(避免对html进行长度空状态检查)