Laravel:验证表单中的名称输入
Posted
技术标签:
【中文标题】Laravel:验证表单中的名称输入【英文标题】:Laravel: Validate a name input in a form 【发布时间】:2017-10-27 23:27:02 【问题描述】:我正在使用 laravel 并有一个表单。如何验证表单中输入字段的名称。这样就不能在该字段中输入随机数。它只是一个简单的输入字段:
<div class="col-md-6 col-sm-6">
<label>First Name: </label>
</div>
<div class="col-md-6 col-sm-6">
<input type="text" class ="span3" name="first_name" id="first_name"
required/><br><br>
</div>
我已经通过我看到的一个示例验证了一封电子邮件,并且在您键入后离开该输入框而不是等待单击提交按钮时,它就会被验证。
我怎样才能做到这一点?意思是,一旦用户在输入某些内容(数字)后离开输入字段,它就会验证并 说了些什么(比如“请输入一个正确的名字”)。我不确定是否 它是否需要使用正则表达式,以及如何获得我想要的结果。
我的电子邮件代码如下:
<div class="row">
<div class="form-group $errors->has('email') ? ' has-error' : '' ">
<div class="col-md-6 col-sm-6">
<label>Email: </label>
</div>
<div class="col-md-6 col-sm-6">
<input type="email" class ="span3" id="email" name="email" value="
old('email') " required/><br><br>
@if ($errors->has('email'))
<span class="help-block">
<strong> $errors->first('email') </strong>
</span>
@endif
</div>
</div>
我可以从一个示例中做到这一点,这会在用户输入后立即验证电子邮件。
【问题讨论】:
这不是完整的代码。对于实时表单验证,需要某种 javascript。请更新问题 @WesleyPeeters 没有实时验证怎么办? 我已经为你发布了一个相当长的答案哈哈!干杯 【参考方案1】:在 jQuery 中,只要输入字段 #first_name
失焦,您就可以使用 focusout
方法。 https://api.jquery.com/focusout/
如果您想检查提供的给定值是否有效,您可以使用 [正则表达式],就像您在 email
输入字段中所做的一样:
这是一个给定的例子:
$('#first_name').focusout(function()
var sValue = $(this).val();
var sEmailPattern = /[a-z][A-Z]$/i;
var bCheckValue = sEmailPattern.test(sValue);
console.log(bCheckValue);
if (bCheckValue !== true)
alert('please enter a proper name');
return false;
// Rest of code ....
);
希望这对您的情况有所帮助。
【讨论】:
我尝试在输入后将其放在脚本标签中,但没有成功..我放错了吗? 嗯...你能console.log(sValue)
吗?【参考方案2】:
要在 Laravel 中验证请求,您可以做两种不同的事情:
选项 1. 验证器
假设您的表单被发布到控制器中的方法test
:
public function test(Request $request)
//
你可以在这个方法中做的是像这样使用验证器:
public function test(Request $request)
$this->validate($request, [
'email' => 'required|email',
]);
可以在Here 找到完整的验证规则列表。当验证规则失败时,使用它会抛出一堆错误。有关如何在视图中显示这些错误的说明,请参见 Here。
选项 2. 表单请求验证
另一种选择是使用请求类。这些请求类可以使用 artisan 命令生成。该命令的签名如下:
php artisan make:request NAME OF YOUR REQUEST
为了回答这个问题,我将使用一个名为 TestRequest
的请求类。生成后,类将如下所示:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class TestRequest extends FormRequest
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
return false;
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
return [
//
];
让我们快速分解一下。
authorize
函数:
这个函数就像它的名字一样。它确定用户是否有权提出此请求。一个小例子是,在一个有留言簿的网站上,每个人都可以发表评论,所以你可以return true
:
public function authorize()
return true;
但是,如果您希望某个用户仅在他具有某些权限的情况下才被允许,您也可以通过此功能进行检查。但是,authorize
函数必须返回一个布尔值 (true/false)。要了解这是如何完成的,请阅读 Laravel 的大门here。
rules
函数:
在此功能中,可以设置字段的验证规则。这些规则与之前提到的the validator
相同。一个小例子是这样的:
public function rules()
return [
'email' => 'required|email'
];
其中数组元素的key是表单的name
属性,value是验证规则列表,除以|
。
我建议你大致阅读 Laravel 的验证,这可以通过 here 完成。
我希望这对您有所帮助。干杯!
【讨论】:
我明白了,但是如何写正则表达式。会是这样:'first_name' => 'required|/[a-z][A-Z]/|first_name' 吗?在您提供的 laravel 文档链接中无法正确找到它以上是关于Laravel:验证表单中的名称输入的主要内容,如果未能解决你的问题,请参考以下文章