即使没有表单字段,Laravel 也会显示验证错误?
Posted
技术标签:
【中文标题】即使没有表单字段,Laravel 也会显示验证错误?【英文标题】:Laravel showing validation error even when no form fields are present? 【发布时间】:2017-10-18 16:28:58 【问题描述】:你好,我是 laravel 的新手。我用的是5.0v。我已经学会了一些关于 laravel 的欢迎页面、控制器、模型、路由和数据库的玩意。所以,我所做的是我使用 laravel 登录页面代替欢迎页面。当我没有在电子邮件和密码字段中输入任何内容时,我得到验证错误:电子邮件字段是必需的。和密码字段是必需的。之后我尝试使用密码重置页面和注册页面。我得到了正确的验证错误。对于注册页面,我从 services>registrar.php 文件的规则部分中删除了“必需”。正如预期的那样,我没有收到注册页面的“必需”验证错误。但我仍然收到登录和密码重置页面的“必需”错误。我从 login.blade.php 中删除了电子邮件和密码字段。但是,当我单击登录时,它会显示电子邮件和密码字段的“必填”错误,尽管页面上没有这些字段。然后,我创建了一个新页面,其中包含电子邮件和密码类型以外的表单字段。我用它代替了登录页面。但是,当将字段留空并单击提交时,它会显示电子邮件和密码的“必填”错误,即“电子邮件字段是必需的”。和“密码字段是必需的”。那么,这个问题的原因是什么?而且,就像我为验证错误规则编辑 registrar.php 一样,有没有办法编辑登录和密码重置页面? when other fields are there
my own custom form
【问题讨论】:
您好,这是一个很好的问题,渴望探索框架。答案是在 laravel 5.0 中,登录验证被框架深深嵌入到控制器逻辑中,改变它并不是那么简单。使用较新版本的框架,您可以更轻松地做到这一点。在 laravel 5.0 中,登录验证被硬编码在文件veondor/laravel/framework/Illuminate/Foundation/Auth/AuthenticatesAndRegistersUsers.php
中的方法 'postLogin' 中。
如果您确实需要更改此设置,则可以将整个方法复制粘贴到app/Http/Controllers/Auth/AuthController.php
。因此用这个覆盖内置方法。现在您可以在“AuthController”中的“postLogin”方法中进行所需的更改。希望这可以帮助。如果您仍处于学习阶段,那么我建议您从 5.3 或 5.4 版本开始
非常感谢!我将 postLogin、postEmail 和 postReset 方法复制/粘贴到 authcontroller.php 和 passwordcontroller.php 并根据需要得到错误消息。现在,我想我不必担心“必需的”验证错误。而且,正如你所建议的,我打算使用 laravel 5.4。但我怀疑它是否适用于 php 5.5.3 !因为一开始,我已经安装了 laravel 5.4,但我想我有一些类似的插件,否则安全性不适用于这个 php 版本的消息。然后我安装了 laravel 5.0 而没有尝试 laravel 5.4。谢谢!
我已将评论添加为我的答案以及 php 版本信息。这应该让您清楚地了解可以从什么开始。下一个版本 5.5 也将仅是 PHP 7。所以我建议使用 laravel 5.4 来学习和安装 PHP 7。
【参考方案1】:
您好,这是一个渴望探索框架的好问题。答案是在 laravel 5.0 中,登录验证被框架深深嵌入到控制器逻辑中,改变它并不是那么简单。使用较新版本的框架,您可以更轻松地做到这一点。在 laravel 5.0 中,登录验证被硬编码在文件 veondor/laravel/framework/Illuminate/Foundation/Auth/AuthenticatesAndRegistersUsers.php
的方法 'postLogin' 中。如果您确实需要更改此设置,则可以将整个方法复制粘贴到app/Http/Controllers/Auth/AuthController.php
。因此用这个覆盖内置方法。现在您可以在“AuthController”中的“postLogin”方法中进行所需的更改。希望这可以帮助。如果您仍处于学习阶段,那么我建议您从 5.3 或 5.4 版本开始
Laravel PHP requirement
Laravel 5.4 : PHP >= 5.6.4
Laravel 5.3 : PHP >= 5.6.4
Laravel 5.2 : PHP >= 5.5.9
Laravel 5.1 : PHP >= 5.5.9
Laravel 5.0 : PHP >= 5.4, PHP < 7
【讨论】:
以上是关于即使没有表单字段,Laravel 也会显示验证错误?的主要内容,如果未能解决你的问题,请参考以下文章
即使使用密钥,VeeValidate 也会验证不存在的字段错误
如何在 laravel 中输入所有数组并在字段下方显示验证错误
即使缺少所需的值,Django 验证也会调用 clean()