首页 > 解决方案 > Laravel - 不同控制器的一种形式

问题描述

我有一个多步骤注册表单,它将以相同的提交将数据发送到三个不同的资源控制器(以存储功能),等等模型。

表单控制器:

class Registration extends Controller
{


    public function index() {

        return view('admin.registration');
    }

    public function store(Request $r) {
        Controller1::store($r->step1)
        Controller2::store($r->step2)
        Controller3::store($r->step3)
    }
}

怎么可能是一个好习惯?

标签: phplaravel

解决方案


不需要调用 3 个不同的控制器,而是应该与 3 个不同的模型进行交互。从您的代码中,我假设您将表单提交到Registration@store. 这是代码的方式

假设您有 3 步表格

  1. 第一步:获取用户邮箱、手机密码
  2. Step2:用户地址和国家
  3. 第三步:用户公司简介

提交表单后,它会点击该store方法。我还假设您有 3 张桌子和3 modalie User, Profile, CompanyProfile

如果是这样的话,我的方法是这样的

public function store(Request $request) {
$data['name'] = $request->get('name');
$data['email'] = $request->get('email');
....................................
....................................
$user  = User:create($data)  //This will create your user modal instance

//Now upload the 2nd steps data

$step2['user_id'] = $user->id;
$step2['locality'] = $request->get('locality');
.....................................
....................................
Profile::create($step2);


$step3['user_id'] = $user->id;
$step3['locality'] = $request->get('locality');
.....................................
....................................
CompanyProfile::create($step3);

return redirect('/home')  //or whereever you want to redirect your user
}

推荐阅读