如何在laravel控制器文件中创建和更新相同的功能以进行创建和更新操作?

时间:2017-10-11 10:25:57

标签: php laravel function controller crud

我已经有两个相同的表格。  我的控制器下面显示了两个单独的创建和更新功能  我是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');
}

我需要为这两个操作只做一个功能。请提前告诉你。

1 个答案:

答案 0 :(得分:0)

定义路线

Route::post('createanddelete/{id?}','YourController@yourFunction');

通过给予?在路线中意味着可选参数

在您的控制器中

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');
  }
}

在视图提供程序中相应的表单操作。

希望这会有所帮助,但您应该为模块化代码编写单独的函数