【发布时间】:2017-07-11 03:45:37
【问题描述】:
我是 PHP 和 Laravel 框架的新手,我有以下疑问。
我正在按照本教程将 reCAPTCHA 插入表单(但我的疑问更多的是与表单验证相关而不是 reCAPTCHA):http://tutsnare.com/how-to-use-captcha-in-laravel-5/
所以要声明一个表单,它在视图中使用以下语法:
{!! Form::open(array('url'=>'contact','method'=>'POST', 'id'=>'myform')) !!}
我认为这个语法与 laravelcollective/html 命名空间有关,是吗?
所以我安装了它来执行语句:
composer require "laravelcollective/html":"^5.4"
在控制器方法中定义了这个index()方法来处理表单sumbit操作:
<?php namespace App\Http\Controllers;
use Input;
use Validator;
use Redirect;
use Session;
class EnquiryController extends Controller {
public function index()
{
$data = Input::all();
$rules = array(
'name' => 'required',
'email' => 'required|email',
'subject' => 'required',
'g-recaptcha-response' => 'required|captcha',
'msg' => 'required',
);
$validator = Validator::make($data, $rules);
if ($validator->fails()){
return Redirect::to('/contact')->withInput()->withErrors($validator);
}
else{
// Do your stuff.
}
}
}
所以,正如您在前面的代码 sn-p 中看到的,此方法使用 $rules 数组提供输入验证,如果验证失败,则会重定向到显示包含验证的同一页面错误:
return Redirect::to('/contact')->withInput()->withErrors($validator);
这部分代码将在视图中打印:
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.<br /><br />
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
我的疑问是:我是否可以使用纯 HTML 表单而不是 laravelcollective/html 命名空间提供的表单,以同样的方式验证表单输入并返回潜在错误?
【问题讨论】:
标签: php laravel laravel-5 laravel-validation laravelcollective