Laravel 5.3验证多个请求显示错误

时间:2016-12-19 12:44:16

标签: php laravel validation

您好我有一个控制器可以从1个表单中将多个值插入到2个表中,我可以验证它们,但一次只能验证一个。只有当我点击按钮插入它才会显示第二次验证的错误。

public function store(CreateRequest $request, RegisterRequest $request2)
{
$input = Input::all();
$validation = Validator::make($input, $request->rules());
$validation2 = Validator::make($input, $request2->rules());
if ($validation->passes() and $validation2->passes())
{
  Users::create($input);
  Register::create($input2);
  return Redirect::route('users.main')
  ->withSuccess('Created');
 }

 return Redirect::route('users.create')
 ->withInput()
 ->withErrors();  
}

2 个答案:

答案 0 :(得分:1)

你完全错了。请求是单个请求。虽然laravel在这种情况下支持请求内部请求但我看到的是您正在尝试将用户注册到系统中。这样做。

创建一个请求。只说RegistrationRequest并将所有表单字段和规则放入其中。使用该请求只是为了存储这样的用户。

public function store(RegisterRequest $request)
{
    $data = $request->all();
    $validation = Validator::make($data, $request->rules());

    if ($validation->passes()) {
       $user = User::create([
          'username' => $request->username,
          'name' => $request->name
       ]);
       $register = Register::create([
         'blabla' => $request->name,
         'username' => $user->username
       ]);
       return Redirect::route('users.main')->withSuccess('Created');
    }
    return Redirect::route('users.create')->withInput()->withErrors();  
}

这只是一个演示,根据您遇到的实际问题是您正在尝试错误的方法,还有其他方法可以执行此操作。并且还会抛出验证错误并将其重定向到自动创建视图。所以你不必自己动手

答案 1 :(得分:0)

您可以合并验证器的消息并将其发送回:

$errors = $validation->errors()->merge($validation2->errors())

return Redirect::route('users.create')->withInput()->withErrors($errors);