gpt4 book ai didi

laravel - 此路由不支持 PUT 方法

转载 作者:行者123 更新时间:2023-12-05 03:59:47 25 4
gpt4 key购买 nike

我无法通过 laravel Controller 中的存储功能提交表单信息。该表单需要为注册用户创建一个新的配置文件。

我什至重新创建了项目,并重做了表单 - 回到纯 html,因为我怀疑 laravelCollective 函数可能导致它,但仍然是同样的错误。我什至按照另一篇帖子/主题中的建议重新排列了表单属性。

我什至重新创建了项目,并重做了表单 - 回到纯 html,因为我怀疑 laravelCollective 函数可能导致它,但仍然是同样的错误。我什至按照另一篇帖子/主题中的建议重新排列了表单属性。

表格:

< form method="POST" enctype="multipart/form-data" action="{{ url('users/profile') }}" accept-charset="UTF-8" >
@csrf
...
// input fields here
...
< /form >

路线:

    Route::resource('users/profile', 'ProfileController');

Route::get('/home', 'HomeController@index')->name('home');

Route::resource('users', 'UserController');
Route::post('users/profile', 'ProfileController@store')->name('profile.store');

ProfileController@store 函数://省略部分代码

    public function store(Request $request)
{

$this->validate($request, [
'firstname'=>'required',
'lastname'=>'required',
...
'desc'=>'required'
]);


//handle file upload
if($request->hasFile('cover_image')) {
//Get file name with extension
$fileNameWithExt = $request->file('cover_image')->getClientOriginalName();
//Just file name

$fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME);

//Just Ext
$ext = $request->file('cover_image')->getClientOriginalExtension();

//FileName to Store
$fileNameToStore = $fileName.'_'.time().'_'.$ext;
//upload image
$path = $request->file('cover_image')->storeAs('public/users/'.auth()->user()->id.'cover_images/'.$request->input('firstname').'_'.$request->input('lastname').'_'.auth()->user()->id.'/',$fileNameToStore);


} else {
$fileNameToStore = 'noimage.jpg';
}
/*
*/

$profile = new Profile;
$profile->firstname = $request->input('firstname');
$profile->lastname = $request->input('lastname');
...
$profile->desc = $request->input('desc');
$profile->save();
return redirect('/users/profile');//->with('success','Profile Created');
}

著名的错误:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException The PUT method is not supported for this route. Supported methods: GET, HEAD, POST.

不确定是什么导致了错误,感谢帮助。

最佳答案

如果我没理解错的话,这是为了商店功能吧?那么您不必将 @method('PUT') 放入您应该发布的表单中。存储在资源中的路由是POST。

这是你的代码,我删除了 @method('PUT')

< form method="POST" enctype="multipart/form-data" action="{{ url('users/profile') }}" accept-charset="UTF-8" > 
@csrf ...
// input fields here ...
< /form >

The Routes: Route::resource('users/profile', 'ProfileController');

Route::get('/home', 'HomeController@index')->name('home');

Route::resource('users', 'UserController'); Route::post('users/profile', 'ProfileController@store')->name('profile.store');

PUT方法用于更新。在 Controller 中更新时,您需要在表单中传递 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 >

希望对您有所帮助!

关于laravel - 此路由不支持 PUT 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56879139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com