自动验证
表单验证是为了防止访问者跳过客户端验证而造成的系统安全问题,一但非法用户绕过客户端验证而服务器端没有加以验证,这样就是很不安全了,所以项目必须要进行服务器端表单验证。
Laravel 提供了多种不同的验证方法来对应用程序传入的数据进行验证。
注:多个验证规则可以通过 "|" 字符进行隔开
规则名 |
说明 |
required |
不能为空 |
max:value |
字段值必须小于或等于value,对于字符串来说,value 为字符数 |
min:value |
字段值必须大于或等于value,对于字符串来说,value 为字符数 |
|
验证邮箱是否合法 |
url |
验证字段必需是有效的 URL 格式 |
confirmed |
验证两个字段是否相同,如果验证的字段是password,则必须输入一个与之匹配的password_confirmation字段 |
integer |
验证字段必须是整型 |
ip |
验证字段必须是IP地址 |
numeric |
验证字段必须是数值 |
size:value |
value 验证字段必须有和给定值value想匹配的尺寸,对字符串而言,value是相应的字符数目,对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数 |
string |
验证字段必须是字符串 |
unique |
表名,字段,需要排除的ID |
between:min,max |
验证字段值的大小是否介于指定的 min 和 max 之间。字符串、数值或是文件大小的计算方式和 size 规则相同 |
* 验证方式一:(控制器验证)
Input::method()得到获取方法;
public function valite(Request $request){
$this->validate($request,[
'title' => "required" //验证的规则,多个规则通过“|”隔开
],[
'title.required' => "标题是必填的"
]);
}
如果验证不通过会重定向返回原来的页面;
常用的规则有:
错误信息的输出:从session中获取错误信息;$errors变量中;可以直接在视图中显示
@if(count($errors)>0)
@foreach($errors->all as $error)
{{$error}}
@endforeach
@endif
错误信息的转成中文,需要下载对应的语言包;网址:[https://packagist.org] laravel-lang
将下载的语言包放到resources/lang/
修改config/app.php中的配置项:'locale' => 'zh-CN',如果没有的直接修改语言包
方式二,独立方式去验证表单
namespace App\Http\Controllers;
use Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class PostController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
}
}