📜  laravel 重定向返回错误和输入 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:38.709000             🧑  作者: Mango

Laravel 重定向返回错误和输入 - PHP

在 Laravel 中,重定向是一个常见的操作,它可以让用户在不同的页面间进行切换。但是,有时候我们需要在重定向时同时返回错误信息和用户输入的数据。本文将介绍如何在 Laravel 中实现这一功能。

返回错误信息

在 Laravel 中,我们可以使用 withErrors() 方法将错误信息存储到 Session 中,并在重定向时将其带回到前端页面中。

以下是一个示例,展示如何在表单验证失败时返回错误信息:

// 在 Controller 中
public function store(Request $request)
{
    $rules = [
        'name' => 'required',
        'email' => 'required|email',
    ];

    $messages = [
        'name.required' => '姓名不能为空',
        'email.required' => '邮箱不能为空',
        'email.email' => '请输入有效的邮箱地址',
    ];

    $validator = Validator::make($request->all(), $rules, $messages);

    if ($validator->fails()) {
        return redirect()
            ->back()
            ->withErrors($validator)
            ->withInput();
    }

    // 存储数据到数据库中
}

在上面的例子中,我们使用了 Validator 对数据进行验证,如果验证失败,则将错误信息存储到 Session 中,然后使用 withInput() 方法将用户输入的数据一同带回前端页面中。

接下来,在前端页面中可以使用以下代码展示错误信息:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

上面的代码将会展示所有的错误信息。

返回用户输入数据

在 Laravel 中,我们也可以使用 withInput() 方法一同将用户输入的数据带回前端页面中。

以下是一个示例,展示如何在表单验证失败时返回用户输入的数据:

// 在 Controller 中
public function store(Request $request)
{
    $rules = [
        'name' => 'required',
        'email' => 'required|email',
    ];

    $messages = [
        'name.required' => '姓名不能为空',
        'email.required' => '邮箱不能为空',
        'email.email' => '请输入有效的邮箱地址',
    ];

    $validator = Validator::make($request->all(), $rules, $messages);

    if ($validator->fails()) {
        return redirect()
            ->back()
            ->withErrors($validator)
            ->withInput();
    }

    // 存储数据到数据库中
}

在上面的例子中,我们使用了 withInput() 方法一同将用户输入的数据带回前端页面中。

接下来,在前端页面中可以使用以下代码展示用户输入的数据:

<input name="name" value="{{ old('name') }}" type="text">
<input name="email" value="{{ old('email') }}" type="email">

上面的代码将会展示用户输入的数据。

结论

在 Laravel 中,重定向是一个常见的操作,我们可以使用 withErrors() 方法将错误信息存储到 Session 中,并使用 withInput() 方法将用户输入的数据带回前端页面中,从而在重定向时返回错误信息和用户输入的数据。