我有问题,试图让表单验证工作在Laravel这是奇怪的,因为它通常只是工作。
在我的用户模型中,我创建了验证规则:
public static $rules = array(
'firstname'=>'required|min:2|alpha',
'lastname'=>'required|min:2|alpha',
'email'=>'required|email|unique:users',
'password'=>'required|alpha_num|between:8,12|confirmed',
'password_confirmation'=>'required|alpha_num|between:8,12',
'telephone'=>'required|between:10,12',
'admin'=>'integer'
);
在我的用户控制器中,我只在验证通过时才定义操作,否则用户将被重定向回错误:
public function postCreate() {
$validator = Validator::make(Input::all(), User::$rules);
if ($validator->passes()) {
$user = new User;
$user->firstname = Input::get('firstname');
$user->lastname = Input::get('lastname');
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->telephone = Input::get('telephone');
$user->save();
return Redirect::to('users/signin')
->with('message', 'Thank you for creating a new account. Please sign in.');
}
return Redirect::to('users/create-account')
->with('message', 'Something went wrong')
->withErrors($validator)
->withInput();
}
发生下列错误:
在视图中,我显示错误(如果存在):
@if($errors->has())
<div id="form-errors">
<p>The following errors have occurred:</p>
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div><!-- end form-errors -->
@endif
我遇到的问题是,当提交一个空表单时,输出如下:
validation.required
validation.required
validation.required
validation.required
validation.required
validation.required
代替:
The firstname field is required.
The lastname field is required.
The email field is required.
The password field is required.
The password confirmation field is required.
The telephone field is required.
如果有人能建议为什么会发生这种情况或我错过了什么,那么这将是非常感谢!
7条答案
按热度按时间xggvc2p61#
如果你以前使用过,那么你应该检查一下你是否在
app\lang\en\validation.php
中定义了消息,或者你碰巧改变了应用的locale,没有为它定义消息。有很多种可能性。wf82jlnq2#
我也遇到过类似的问题,问题是我不小心删除了resources/lang/en/validation.php
vd2z7a6w3#
我遇到了这个问题。检查
lang
目录,它应该放在resource
目录中。我把lang目录拖到另一个目录,然后我得到了和你一样的验证响应。修复的方法只是把它移回资源目录。
zujrkrfu4#
当我将我的语言环境和备份语言环境都设置为app.php中没有验证文件的语言环境时,我遇到了类似的问题。尝试将备份语言环境设置为en或您确信存在的语言环境。
vsdwdz235#
我遇到了同样的问题,下面是此问题的解决方案
检查
resources/lang/en/validation.php
文件是否存在或
在config\app.php中将您的区域设置和fallback_locale更改为“en”
然后运行
php artisan config:cache
6rqinv9w6#
解决此问题的方法是检查您的
lang
目录是否存在于/resources
目录下。u7up0aaq7#
project\resources\lang\en\validation.php
中 * 缺少 * 文件project\lang\en\validation.php
。SIMPLE:
lang
文件夹不存在于resources\lang
中。只需将lang文件夹复制粘贴到resources中。**我是如何弄清楚的?**我安装了一个新的laravel应用程序与breez Vue惯性和它的工作与错误消息很好,然后我比较我目前的项目结构,并做了一些研究,最后得到了解决方案。
只需从
project\lang
复制整个文件夹并粘贴到project\resources\lang
中。如果资源中没有lang文件夹,则只需创建它并粘贴复制的文件。它的工作!此错误大多发生在您创建简单的***Laravel项目***和随后安装Vue等时,并且在安装/配置lang
文件夹时可能会意外跳过resources/lang
。如果您没有
validation.php
文件,那么只需后藤github laravel/laravel并复制该文件。