Laravel 此路由不支持PUT方法

Laravel 此路由不支持PUT方法,laravel,forms,laravel-5,Laravel,Forms,Laravel 5,我无法通过laravel控制器中的存储功能提交表单信息。表单需要为注册用户创建一个-new-profile 我甚至已经重新创建了这个项目,并重新制作了表单——返回到纯html,因为我怀疑是laravelCollective函数引起的,但仍然是相同的错误。 我甚至按照另一篇文章/线程中的建议重新排列了表单属性 我甚至已经重新创建了这个项目,并重新制作了表单——返回到纯html,因为我怀疑是laravelCollective函数引起的,但仍然是相同的错误。 我甚至按照另一篇文章/线程中的建议重新排列

我无法通过laravel控制器中的存储功能提交表单信息。表单需要为注册用户创建一个-new-profile

我甚至已经重新创建了这个项目,并重新制作了表单——返回到纯html,因为我怀疑是
laravelCollective
函数引起的,但仍然是相同的错误。 我甚至按照另一篇文章/线程中的建议重新排列了表单属性

我甚至已经重新创建了这个项目,并重新制作了表单——返回到纯html,因为我怀疑是
laravelCollective
函数引起的,但仍然是相同的错误。 我甚至按照另一篇文章/线程中的建议重新排列了表单属性

表格:

< form method="POST" enctype="multipart/form-data" action="{{ url('users/profile') }}" accept-charset="UTF-8" >
    @csrf
...
// input fields here
...
< /form >
ProfileController@store功能: //省略了一些代码

公共函数存储(请求$Request)
{
$this->validate$请求[
'firstname'=>'required',
'lastname'=>'required',
...
“描述”=>“必需”
]);
//处理文件上传
如果($request->hasFile('cover_image')){
//获取扩展名为的文件名
$fileNameWithExt=$request->file('cover_image')->getClientOriginalName();
//只是文件名
$fileName=pathinfo($fileNameWithExt,pathinfo\u fileName);
//只是分机
$ext=$request->file('cover_image')->getClientOriginalExtension();
//要存储的文件名
$fileNameToStore=$fileName.''.time().'.ext;
//上传图像
$path=$request->file('cover_image')->storeAs('public/users/'.auth()->user()->id.'cover_images/'.$request->input('firstname')。''.$request->input('lastname')。'.'.auth()->user()->id./,$fileNameToStore);
}否则{
$fileNameToStore='noimage.jpg';
}
/*
*/
$profile=新配置文件;
$profile->firstname=$request->input('firstname');
$profile->lastname=$request->input('lastname');
...
$profile->desc=$request->input('desc');
$profile->save();
返回重定向('/users/profile');//->带有('success','profile Created');
}
著名的错误是:

Symfony\Component\HttpKernel\Exception\ MethodNotAllowedHttpException对此不支持PUT方法 路线支持的方法:GET、HEAD、POST


不确定是什么原因导致了错误,敬请帮助。

在路由上使用Laravel资源方法时,它使事情在预期方面变得非常具体。如果您查看上的图表,它将查找一个uri,其中更新元素id作为uri的一部分返回。示例如下所示:
/photos/{photo}
。我不确定这是否就是您构建html表单的方式

你说你在用LaravelCollective让它工作。这通常工作得很好,并且具有易于表单模型绑定的巨大优势。但它有助于包括命名路由,其中包括更新资源的“更新”。例如:

{!! Form::model($yourModel, array('route' => array('yourRoute.update', 
                  $yourModel->id), 'method'=>'PUT', 'id'=>'Form'))!!}

我对使用此方法的集合没有问题。

您的路由文件有问题,只需将编辑路由更改为此路由即可

Route::match(['put', 'patch'], 'the path you want /{id}','controllername@functionname');
您应该注意到,如果您是laravel的新手,您应该将id传递给此路由,如本部分所示{id}这样您的编辑功能就可以显示它以前的数据,而且如果您想提交一个表单,它应该有put方法,而html基本表单不支持这种方法,因此您应该找到一种方法来提交它,就像使用laravel collective或者在表单中放置一个隐藏方法一样
如果它不起作用,请给我打电话

如果我理解正确,这是存储功能,对吗?然后,您不必将
@method('put')
放在表单中,表单应该发布。存储在资源中的路径是POST

这是您的代码,我删除了
@方法('PUT')

@csrf。。。 //在这里输入字段。。。
路由:Route::resource('users/profile','ProfileController'); 路由::get('/home','HomeController@index')->名称('home'); 路由::资源('users','UserController');路由::post('用户/配置文件','ProfileController@store')->name('profile.store');
使用PUT方法进行更新。当在控制器中更新时,您需要在表单中传递如下所示的id

< form method="POST" enctype="multipart/form-data" action="{{ url('users/profile', $data->id) }}" accept-charset="UTF-8" >
@method('PUT') 
@csrf ... 
// input fields here ... 
< /form >
id)}”接受字符集=“UTF-8”> @方法('PUT') @csrf。。。 //在这里输入字段。。。

我希望有帮助

还是不行。即使我只是尝试添加内容。
< form method="POST" enctype="multipart/form-data" action="{{ url('users/profile', $data->id) }}" accept-charset="UTF-8" >
@method('PUT') 
@csrf ... 
// input fields here ... 
< /form >