Froms的使用实例
来源:互联网 发布:江湖婚庆 3.0源码 编辑:程序博客网 时间:2024/05/18 16:15
视图模板
index.blade.php
{!! Form::open(['url'=>'/articles']) !!} //指定文章上传路由<div class="form-group"> //添加样式 {!! Form::label('title')!!} {!! Form::text('title',null,['class'=>'form-control',‘id'=>3])!!} //添加样式,也可传参。</div><!--- content Field ---><div class="form-group"> {!! Form::label('content', 'content:') !!} {!! Form::textarea('content', null, ['class' => 'form-control']) !!}</div><!--- published_at Field ---><div class="form-group"> {!! Form::label('published_at', ':') !!} {!! Form::input('date','published_at', date('Y-m-d'), ['class' => 'form-control']) !!}</div>{!! Form::submit('发表文章',['class'=>btn btn-primary form-control'])!!}{!! Form::close()!!}//将错误内容输出@if($errors->any())<ul class="list-group"> @foreach($errors->all() as $error) <li class="list-group-item list-group-item-danger">{{ $error }}</li> @endforeach</ul>@endif
路由
Route::get('/articles','ArticlesController@index');Route::get('/articles/create','ArticlesController@create');Route::get('/articles/{id}','ArticlesController@show');Route::post('/articles','ArticlesController@store');
控制器
ArticlesController.php
public function index(){ //$articles=Article::latest()->where('published_at','<=',Carbon::now())->get(); latest()方法使最新发布的文章排在最上面,where('published_at','<=',Carbon::now())的作用是使未来时间的内容不能再页面上显示 $articles=Article::latest()->published()->get(); //latest()方法使最新发布的文章排在最上面,published()是调用了数据库Article的一个成员方法 return view('articles.index',compact('articles'));}public function show($id){ $article=Article::findorFail($id) //关于Carbon的应用 //使用下段代码可以输出关于15 minute ago //dd($artcle->created_at->diffForHumans()) //如果使用published_at,则会报错call to a member function diffForHumans() on string,因为Carbon对象默认处理的不是pubished_at //则需要再数据库Article中输入一段代码 protected $dates=['published_at'] //dd($artcle->published_at->diffForHumans()) return view('article.show',compact('article'));}public function create($id){ return view('article.create');}//public function store(Request $request)//修改成可以使用Requests的实例化应用,变量$request是Requests\CreateArticleRequest对象的实例化//lavarel会将全部的数据进行Requests\CreateArticleRequest规则验证,如果提交的代码没有通过Requests\CreateArticleRequest这项规则的话,下面的方法是不会调用的。public function store(Requests\CreateArticleRequest $request){ //打印全部获取的数据 //dd($request->all()); //获取某一字段的值,如获取文章的title的值 //$request->get('title'); //1 接受post传过来的数据 //2 存入数据库 //3 重定向 //$input=$request->all() //$input['published_at']=carbon::now(); //Article::create($input); 创建字段时,laravel会自动过滤掉token值 //return view('articles/'); Article::create($request->all()); return redirect('/articles')}
注:表单中自动生成的 _token 提交到后台如何过滤掉?
$input = $request->only(['username', 'password']); //填写你需要写入DB的字段$input = $request->only('username', 'password'); //同上$input = $request->except(['_token']); //去除某一字段, 如这的_token$input = $request->except('_token'); //同上
数据库模型
class Article extends Model{ protected $fillable=['title','content','published_at']; //将published_at设置成Carbon对象处理的时间字段 protected $dates=['published_at'] //setTitleAttribute,这段代码的作用是:在写入数据库之前,会先转换成Carbon设置的时间格式,然后再写出数据库当中。 public function setPublicedAtAttribute($date) { $this->attributes['published_at']=Carbon::createFromFormat('Y-m-d',$date); } //查询不超过目前时间的文章内容,以供控制器中的调用 //scope是关键词开始,后面的Published是方法名字 public function scopePublished($query) { $query->where('published_at'.'<=',Carbon::now()); }}
验证规则
创建规则文件
php artisan make:request createArticleRequest
该文件本创建再\App\Http\Requests文件夹中CreateArticleRequest.php
打开该文件。
//该方法可用于A发表的文章不能由B来编辑public function authorize(){ //return false //将false改为true,true表示任何人都可以将表单提交过来 return true;}public function rules(){ return [ //设置规则,如果多个规则的话,用|分割 'title'=>'required',//email min:3等 'content'=>'required', 'published_at'=>'required' ];}
第二种规则验证方案
public function store(Request $request){ $this->validate($request,[ 'title'=>'requested', 'content'=>'requested', 'published_at'=>'required']); Article::create($request->all()); return redirect('/articles')}
第三种验证规则
public function store(){ //添加分类提交 $input = Input::except('_token'); $rules = [ 'nav_name' => 'required', 'nav_url' => 'required', ]; $message = [ 'nav_name.required' => '自定义导航名称不能为空!', 'nav_url.required' => '自定义导航url名称不能为空!', ]; $validator = Validator::make($input, $rules, $message); if ($validator->passes()) { $re = Navs::create($input); if ($re) { return redirect('admin/navs'); } else { return back()->with('errors', '自定义导航填充失败,请稍后重试!'); } } else { return back()->withErrors($validator); }}
编辑(创建资源路由,控制器)
创建一个资源路由
Route::resource('articles','ArticlesController');
创建一个对应的控制器
public function edit($id){ $article=Article::findorFail($id) return view('article.edit',compact('article'));}public function update(Requests\CreateArticleRequest $request,$id){ $article=Article::findorFail($id) $article->update($request->all()); return redirect('/articles')}
编辑视图内容
//通过路由中的$article=Articles::findorfail($id),已经获取了文章信息,在通过Form::model绑定,就可以直接在编辑页面自动填充字段相关的已有信息{!! Form::model($article,['method'=>'PATCH','url'=>'/articles'.$article->id]) !!}<div class="form-group"> //添加样式 {!! Form::label('title')!!} {!! Form::text('title',null,['class'=>'form-control',‘id'=>3])!!} //添加样式,也可传参。</div><!--- content Field ---><div class="form-group"> {!! Form::label('content', 'content:') !!} {!! Form::textarea('content', null, ['class' => 'form-control']) !!}</div><!--- published_at Field ---><div class="form-group"> {!! Form::label('published_at', ':') !!} {!! Form::input('date','published_at', date('Y-m-d'), ['class' => 'form-control']) !!}</div>{!! Form::submit('发表文章',['class'=>btn btn-primary form-control'])!!}{!! Form::close()!!}//将错误内容输出@if($errors->any())<ul class="list-group"> @foreach($errors->all() as $error) <li class="list-group-item list-group-item-danger">{{ $error }}</li> @endforeach</ul>@endif
1)在视图Views中,@include(‘/’)默认根目录是Views
2)视图中的内容可以优化,通过@include来整合代码
3)可以在Requests\CreateArticleRequest中通过 if、switch 等判断语句进行不同条件下的信息验证,例如写文章的验证信息,编辑文章的验证信息。也可以是注册,修改等信息验证。
https://laravelcollective.com/docs/5.4/html
http://www.dahuatu.com/1225/192411.html
https://laravel-china.org/topics/2775/i-would-like-to-ask-the-laravel53-template-form-automatically-generated-token-submitted-to-the-background-how-to-filter-out
阅读全文
0 0
- Froms的使用实例
- Oracle Froms application 的配置文件
- Froms验证的具体介绍(中篇)
- web.config 关于froms 的身份验证基本原理
- ASP.NET FROMS验证出现的小问题解决过程
- froms验证
- Froms验证
- Froms认证
- ASP.NET安全问题--Froms验证的具体介绍(中篇)
- (转)ASP.NET安全问题--Froms验证的具体介绍(上篇)
- (转)ASP.NET安全问题--Froms验证的具体介绍(中篇)
- ASP.NET安全问题--Froms验证的具体介绍(中篇)
- ASP.NET安全问题--Froms验证的具体介绍(中篇)
- Froms验证技巧
- Froms验证技巧
- **YII** 系列六Froms
- Delegate的使用实例
- Grid的使用实例
- Shell变量
- 王怡︱上帝的护理之工
- BZOJ1260[CQOI2007]涂色paint (区间DP)
- C#知识学习 遗忘的记忆 -第二天
- 2971:抓住那头牛
- Froms的使用实例
- 交换机的基础知识
- Foreach与迭代器
- 排序--直接插入排序
- UGUI(七)界面拖动和焦点界面
- 【七日牧函】基督教传统中的友谊
- gec210 i2c程序io模拟方式实现
- shiro-helloworld(1)
- Shell教程