如何在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的提前。

+0

https://laravel.com/docs/5.5/eloquent#other-creation-methods 尝试使用在一个函数此方法。 updateOrCreate同时更新和创建 –

定义您的路线

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