如何在laravel控制器文件中创建和更新用于创建和更新操作的相同功能?
问题描述:
我已经有两个相同的表单。 我的控制器下面显示了两个独立的函数用于创建和更新 我是Laravel框架的新手,我正在致力于地址簿项目。 创造新:如何在laravel控制器文件中创建和更新用于创建和更新操作的相同功能?
public function store(Request $request) // for creating new member
{
request()->validate([
'name' => 'required',
'email' => 'required',
'address'=>'required',
'phone'=>'required',
]);
Member::create($request->all());
return redirect()->route('members.index')
->with('success','Member created successfully');
}
public function update(Request $request,Member $member) //for updating member info
{
request()->validate([
'name' => 'required',
'email' => 'required',
'address'=>'required',
'phone'=>'required',
]);
$member->update($request->all());
return redirect()->route('members.index')
->with('success','Member updated successfully');
}
我需要做只有一个功能,同时为您operations.thank的提前。
答
定义您的路线
Route::post('createanddelete/{id?}','[email protected]');
通过给?在路线意味着可选参数
在控制器
public function yourFunction($id = null, Request $request)
{
request()->validate([
'name' => 'required',
'email' => 'required',
'address'=>'required',
'phone'=>'required',
]);
// write update code
if($id)
{
$member = Member::find($id);
if($member)
{
$member->update($request->all());
return redirect()->route('members.index')
->with('success','Member updated successfully');
}
}
// write create code
else
{
Member::create($request->all());
return redirect()->route('members.index')
->with('success','Member created successfully');
}
}
在视图提供商形式的动作相应。
希望这会有所帮助,但你应该写单独的功能模块化的代码
+0
请注意这个问题,因为它可能有助于其他人 – Vikash
https://laravel.com/docs/5.5/eloquent#other-creation-methods 尝试使用在一个函数此方法。 updateOrCreate同时更新和创建 –