我的Laravel学习之路之Route::resource和Form-Model-Binding,

来源:互联网 发布:fopen提高权限 linux 编辑:程序博客网 时间:2024/06/04 19:46

开始学习一了一个新的路由,要查看当前使用全部路由,我可以使用

php artisan route:list

一个个创建很多路由很麻烦,所以我们使用以下路由

Route::resource('articles','ArticlesController');
然后我们在使用artisan命令来查看一下当前使用路由

GET|HEAD | articles                 | articles.index   | App\Http\Controllers\ArticlesController@index   |            ||        | POST     | articles                 | articles.store   | App\Http\Controllers\ArticlesController@store   |            ||        | GET|HEAD | articles/create          | articles.create  | App\Http\Controllers\ArticlesController@create  |            ||        | GET|HEAD | articles/{articles}      | articles.show    | App\Http\Controllers\ArticlesController@show    |            ||        | PUT      | articles/{articles}      | articles.update  | App\Http\Controllers\ArticlesController@update  |            ||        | PATCH    | articles/{articles}      |                  | App\Http\Controllers\ArticlesController@update  |            ||        | DELETE   | articles/{articles}      | articles.destroy | App\Http\Controllers\ArticlesController@destroy |            ||        | GET|HEAD | articles/{articles}/edit | articles.edit    | App\Http\Controllers\ArticlesController@edit 
这是laravel自动为我们生成的路由,当然你如果自己随心定义,你可以使用隐式控制器路由

这节重点一个是resource,一个是illuminate/html的model自动填充,确实好用

由php artisan route:list 查看得到我们的更新路由

所以我们在edit方法代码如下:

public function edit($id)    {        $list = Samples::findOrFail($id);        return view('sites.edit',compact('list'));    }
当前路由为articles/$id/edit

然后我们上update的视图代码

@extends('app')@section('content')<div class="container"><h3>修改文章</h3><!-- 修改method -->{!! Form::model($list,['method'=>'PATCH','url'=>'/articles/'.$list->id]) !!}@include('sites.form'){!! 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
</div>@stop
注意啊,是因为发表和各更新,中间的表单相同,所以我把它复制到了form.blade.php中,然后使用@include来引入

请注意红色字体,之所以可以自动填充,就是因为使用了上面红色字体所采用的办法.
然而我们仍然需要表单验证,如果不采用js的话,仍然是两种,第一种是是在形参中奖request替换为

Requests\CreateArticleRequest

第二种是,直接上代码吧

public function update(Request $request, $id)    {        $input = $request->all();            $rule = [              'name' => 'required|min:4',              'content' => 'required',              'published_at' => 'required',          ];                $message = [              'required' => ':attribute 不允许为空.',             'min' => ':attribute不能少于:min位.',         ];                      $validate = Validator::make($input, $rule, $message);                if (!$validate->passes()) {              return back()->withErrors($validate);                }          $article = Samples::findOrFail($id);        $article->update($request->all());        return redirect('/articles');    }
看见上面了吧,采用这种方法,实际只需三行代码就可以完成更新.




阅读全文
0 0
原创粉丝点击