【问题标题】:Error on input validation even though input exists即使输入存在,输入验证也会出错
【发布时间】:2022-01-09 16:26:09
【问题描述】:

我有一个应用程序,用户可以通过弹出窗口更改他的名字。

这是处理名称更改的方法:

public function changeVorname(Request $request) {
        $this->validate($request, [
            'vorname' => 'required|max:255',
        ]);

        Portal::query()->where('email', $request->email)->update(['vorname' => $request->neuer_vorname]);

        return redirect()->back()->with('message', 'Vorname erfolgreich geändert');
    }

这是带有模态的刀片文件:

 <div class="w-1/2 mb-4 pb-3 text-lg">
                            <p>Vorname:</p>
                            <input type="text" name="vorname" id="vorname"
                                   value="{{ \Illuminate\Support\Facades\Auth::guard('portal')->user()->vorname }}"
                                   class="flex text-center bg-gray-100 border-gray-500 shadow-2xl
                                   border-opacity-50 border-2 w-full p-4 rounded-lg @error('vorname') border-red-500 @enderror"
                                   readonly>
                            @error('vorname')
                            <div class="text-red-500 mt-2 text-sm">
                                {{ 'Der Vorname darf keine Zahlen enthalten und nicht leer sein' }}
                            </div>
                            @enderror
                            <div class="text-right">
                                <button id="change_vorname" class="md:pl-2" name="change_vorname">
                                    Vorname bearbeiten
                                </button>
                            </div>
                        </div>


                        <div id="change_vorname_modal"
                             class="modal fixed ml-96 top-20 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white hidden">
                            <div class="mt-3 text-center text-xl">
                                Neuer Vorname
                            </div>

                            <div class="items-center px-4 py-3">
                                <label for="neuer_vorname" class="sr-only">Neuer Vorname</label>

                                <form
                                    action="{{ route('change_vorname', \Illuminate\Support\Facades\Auth::guard('portal')->user()->email) }}"
                                    method="post">
                                    @csrf
                                    <input type="text" name="neuer_vorname" id="neuer_vorname"
                                           placeholder="Neuer Vorname" value=""
                                           class="flex text-center  text-sm mb-2 bg-gray-100 border-gray-500 shadow-2xl border-opacity-50 border-2 w-full p-4 rounded-lg">
                                    <button type="submit" id="ok_btn" class="mb-4 pb-3 w-full text-white px-4 py-3 rounded text-base font-medium
                                                bg-gradient-to-r from-green-400 to-blue-500 float-right shadow transition
                                                duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100
                                                shadow-2xl border-2 w-full p-4 rounded-lg">
                                        Vorname ändern
                                    </button>
                                </form>
                            </div>

                            <div class="items-center px-4 py-3">
                                <button id="back" class="mb-4 pb-3 w-full text-white px-4 py-3 rounded text-base font-medium
                                                bg-gradient-to-r from-green-400 to-blue-500 float-right shadow transition
                                                duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100
                                                shadow-2xl border-2 w-full p-4 rounded-lg">
                                    zurück
                                </button>
                            </div>
                        </div>
                        @if(session()->has('message'))
                            <div class="alert alert-success">
                                {{ session()->get('message') }}
                            </div>
                        @endif

                        <script>
                            var vorname_modal = document.getElementById("change_vorname_modal");


                            var vorname_btn = document.getElementById("change_vorname");

                            var back_btn = document.getElementById("back");

                            vorname_btn.onclick = function () {
                                vorname_modal.style.display = "block";
                            }

                            back_btn.onclick = function () {
                                vorname_modal.style.display = "none";
                            }

                            window.onclick = function (event) {
                                if (event.target == modal) {
                                    vorname_modal.style.display = "none";
                                }
                            }
                        </script>

问题是当我在请求验证中有required 时,我总是收到错误,当我删除所需的一切正常时。我需要它,因为用户不应该能够将他的名字重命名为空的。

【问题讨论】:

  • 名为vorname 的输入应该属于什么形式?我看到的唯一表单只有 1 个名为 neuer_vorname 的输入 ...您正在尝试针对 vorname 进行验证,但使用 neuer_voname 更新用户
  • np ...我们只是将其称为错字...祝您好运,并在 Laravel 中玩得开心

标签: php html laravel input laravel-blade


【解决方案1】:

您输入的新名称名称有误。它与验证器密钥不同
像这样更改您的验证器

$this->validate($request, [
    'neuer_vorname' => 'required|max:255',
]);

会有用的

【讨论】:

  • 感谢您花时间回答!你是绝对正确的,我在发布后很快就发现了它,但是在发布和查看代码之前的几个小时我就像被蒙住了眼睛,但现在它可以工作了! =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多