laravel官网的手册总是讲得让人雾里看花,似懂非懂,下面将由我来介绍一下laravel5的表单验证。
1. 例如我们有news这个表,我们希望在新建数据的时候做一个验证,为空,或者标题长度太短都不能通过验证。
2. 我们创建一个验证器 php artisan make:Request NewsRulesRequest;
3. 我们会发现Request文件夹中会生成 NewsRulesRequest.php这个文件 并且这两个文件中有两个方法
/**
* 这个方法若返回true则代表着不需要用户验证
*/
public function authorize()
{
return true;
}
/**
* 写好相应的规则 可用规则参考 http://www.golaravel.com/laravel/docs/5.0/validation/
*/
public function rules() { return [ 'name'=>'required|min:3', 'url'=>'required|min:3', ]; }
4. 接下来是我们如何使用这个验证文件,例如我们controller 中有一个postNews 方法
use App\Http\Requests\NavRulesRequest;//引用这个验证文件
//在发放中直接指明$request 类型,并且使用$request 接受所有数据即可自动验证
function postNews(NavRulesRequest $request){
$data = $request->all();
$flag = News::create($data);
$backurl = "news/add-news";
if($flag) return \Redirect::to($backurl)->with('status', '添加成功!');
else return \Redirect::to($backurl)->with('status','添加失败!');
}
5. 显示错误信息
@if ($errors->any())
<div class="alert alert-danger">
@foreach($errors->all() as $error)
<p>{{ $error }}</p>
@endforeach
</div>
@endif
6. 现在的提示是英文状态的,可以更改为中午状态的,修改config/app.php 中的"locale"=>zh"; 然后在 resources/lang下新建文件夹zh 拷贝resources/lang/en/validation.php 文件到 zh 目录下 更换位对应的中文就可以了
7. 当然我们可以不用新建一个文件,直接在postAddNav中直接使用 Validate也可以(确实父类中是存在使用了这个 use Illuminate\Foundation\Validation\ValidatesRequests;
)
function postNews(Request $request){
$this->validate($request,['newstitle'=>'required|min:3']);
$data = $request->all();
$flag = News::create($data);
$backurl = "news/add-news";
if($flag) return \Redirect::to($backurl)->with('status', '添加成功!');
else return \Redirect::to($backurl)->with('status','添加失败!');
}
结束语
本文有任何错误,或有任何疑问,欢迎留言说明。
网友最新评论