我无法通过提交表单信息来将函数存储在laravel控制器中。表单需要为注册用户创建-新-配置文件。
我什至重新创建了该项目,并重做了表单-移回纯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 \组件\ HttpKernel \异常\ MethodNotAllowedHttpException为此不支持PUT方法 路线。支持的方法:GET,HEAD,POST。
不确定导致错误的原因,请多加帮助。
答案 0 :(得分:1)
如果我正确理解,这是针对存储功能的吗?那么您不必将version: '3' # specify docker-compose version
services:
angular: # name of the first service
build: ./ # specify the directory of the Dockerfile
ports:
- "4200:80" # maps port 4200 on localhost to 80 in container
network:
- mynetwork
depends_on:
- "express"
express: # name of the second service
build: # specify the directory of the Dockerfile
context: ./
dockerfile: dockerfile.be
ports:
- "8000:8000" # maps port 8000 on localhost to 8000 in container
networks:
- mynetwork
networks:
mynetwork:
放在表单中就可以发布了。资源中的存储路径为POST。
这是您删除了@method('PUT')
@method('PUT')
和PUT方法用于更新。在控制器中更新时,您需要在表单中传递看起来像这样的ID。
< 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');
希望对您有帮助!
答案 1 :(得分:0)
在路线上使用Laravel资源方法时,它会使事情变得更加具体。如果您查看manual,上的图表,它正在寻找一个uri,其更新元素ID作为uri的一部分返回。该示例如下所示:/photos/{photo}
。我不确定这就是您构造html表单的方式。
您说过您正在使用LaravelCollective来完成这项工作。这通常可以正常工作,并且具有易于进行表单模型绑定的巨大优势。但是,这有助于包括命名路由,其中包括更新资源的“更新”。例如:
{!! Form::model($yourModel, array('route' => array('yourRoute.update',
$yourModel->id), 'method'=>'PUT', 'id'=>'Form'))!!}
使用此方法,我对Collective没有任何疑问。
答案 2 :(得分:0)
您的路线文件有问题,只需将您的编辑路线更改为此路线
Route::match(['put', 'patch'], 'the path you want /{id}','controllername@functionname');
您应该注意,如果您不熟悉laravel,则应将ID传递到此路由,如本部分 {id} 所示,以便您的编辑功能可以显示其以前的数据,并且如果您要提交表单,则应具有put方法,而html基本表单不支持该表单,因此您应该找到一种提交方法,例如使用 laravelcollection 或放置您表单中的隐藏方法 如果它不起作用,请给我打电话