📜  将验证错误 laravel 重定向到特定部分 laravel - PHP (1)

📅  最后修改于: 2023-12-03 14:53:55.951000             🧑  作者: Mango

将验证错误 Laravel 重定向到特定部分 Laravel

在 Laravel 中,当表单输入验证失败时,通常会重定向到之前填写的页面,并在页面顶部显示错误消息。但是,如果您需要将用户重定向到特定部分(例如表单中的特定输入框),该怎么办?本文将介绍如何将验证错误重定向到特定部分。

第一步:在表单中添加命名锚点

要将用户重定向到特定部分,我们需要在表单中为目标元素设置命名锚点。我们可以通过为特定输入框添加 name 属性来实现这一点:

<input type="text" name="email" id="email">
<a name="email-error"></a>

在这个例子中,我们将命名锚点设置为 email-error。当我们出现验证错误时,我们将在控制器逻辑中引用该命名锚点,并将用户重定向到这个命名锚点所在的页面位置。

第二步:在控制器逻辑中引用命名锚点

接下来,我们需要在控制器中引用命名锚点。我们将使用 withErrors 函数将错误消息附加到重定向的请求中。此外,我们还将使用 withInput 函数将用户的表单输入附加到请求中。最后,我们将引用命名锚点值并将其附加到重定向 URL 的末尾:

class UserController extends Controller
{
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'email' => 'required|email|unique:users',
            'password' => 'required|min:6',
        ]);

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

在这个例子中,我们使用 back 函数返回到之前填写的页面,并使用 withErrors 函数将验证错误消息传递给重定向请求。然后,我们使用 withInput 函数将用户的表单输入附加到请求中。最后,我们使用 anchor 函数将命名锚点值附加到重定向 URL 的末尾。

第三步:在视图中显示错误消息

最后,我们需要在视图中显示错误消息。我们可以使用 @if 语句来检查错误消息是否存在,并使用 @foreach 循环遍历错误消息中的每个错误:

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

在这个例子中,我们首先使用 @if 语句检查是否存在任何错误消息。如果存在,则我们使用 @foreach 循环遍历每个错误消息,并在 <li> 元素中显示错误消息文本。

现在,当表单验证失败时,我们将在页面顶部显示错误消息,并将用户重定向到表单中的特定输入框。

本文介绍了如何将验证错误重定向到特定部分。希望这篇文章能够帮助您更好地掌握 Laravel 开发。谢谢!