最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Route::resource和Form-Model-Binding_html/css

来源:动视网 责编:小采 时间:2020-11-27 16:40:09
文档

Route::resource和Form-Model-Binding_html/css

Route::resource和Form-Model-Binding_html/css_WEB-ITnose:关于Route::resource app/Http/routes.phpRoute::group(['middleware' => ['web']], function () { Route::get('/articles','ArticlesController@index'); Route::get('/articles/create','Arti
推荐度:
导读Route::resource和Form-Model-Binding_html/css_WEB-ITnose:关于Route::resource app/Http/routes.phpRoute::group(['middleware' => ['web']], function () { Route::get('/articles','ArticlesController@index'); Route::get('/articles/create','Arti


关于Route::resource

app/Http/routes.phpRoute::group(['middleware' => ['web']], function () { Route::get('/articles','ArticlesController@index'); Route::get('/articles/create','ArticlesController@create'); Route::get('/articles/{id}','ArticlesController@show'); Route::post('/articles','ArticlesController@store'); Route::get('/articles/{id}/edit','ArticlesController@edit');});

一般我们的一个普通网站的文章有这些url,这些url分别是文章编辑,创建,查看列表,查看文章内容等,laravel框架对于这些有规律的url做了一个叫RESTful Resource Controllers的可重用的资源控制器

php artisan route:list //用这个命令可以查看当前laravel项目的路由情况+--------+----------+--------------------+------+------------------------------------------------+------------+| Domain | Method | URI | Name | Action | Middleware |+--------+----------+--------------------+------+------------------------------------------------+------------+| | POST | articles | | App\Http\Controllers\ArticlesController@store | web || | GET|HEAD | articles | | App\Http\Controllers\ArticlesController@index | web || | GET|HEAD | articles/create | | App\Http\Controllers\ArticlesController@create | web || | GET|HEAD | articles/{id} | | App\Http\Controllers\ArticlesController@show | web || | GET|HEAD | articles/{id}/edit | | App\Http\Controllers\ArticlesController@edit | web |+--------+----------+--------------------+------+------------------------------------------------+------------+

改为使用resource

app/Http/routes.phpRoute::group(['middleware' => ['web']], function () { Route::resource('/articles','ArticlesController'); //将之前的一批路由改为这个。}); php artisan route:list+--------+-----------+--------------------------+------------------+-------------------------------------------------+------------+| Domain | Method | URI | Name | Action | Middleware |+--------+-----------+--------------------------+------------------+-------------------------------------------------+------------+| | GET|HEAD | articles | articles.index | App\Http\Controllers\ArticlesController@index | web || | POST | articles | articles.store | App\Http\Controllers\ArticlesController@store | web || | GET|HEAD | articles/create | articles.create | App\Http\Controllers\ArticlesController@create | web || | DELETE | articles/{articles} | articles.destroy | App\Http\Controllers\ArticlesController@destroy | web || | PUT|PATCH | articles/{articles} | articles.update | App\Http\Controllers\ArticlesController@update | web || | GET|HEAD | articles/{articles} | articles.show | App\Http\Controllers\ArticlesController@show | web || | GET|HEAD | articles/{articles}/edit | articles.edit | App\Http\Controllers\ArticlesController@edit | web |+--------+-----------+--------------------------+------------------+-------------------------------------------------+------------+//再次查看路由,依旧会生成这些有规律的常用的路由list,不过需要注意一些路由,有些是用了PATCH方法,这个是因为浏览器本身只支持get和post,对于其他的方法是无法处理的,所以laravel会在表单的里面提供支持这些其他的方法的语法,当然,在这里我们只需要知道有这些路由,这些路由有这些方法

详情参考:https://laravel.com/docs/5.2/controllers#restful-resource-controllers

在controller里面编写edit方法,

app/Http/Controllers/ArticlesController.php public function edit($id){ $article = Articles::findOrFail($id); //findOrFail方法是laravel的model的提供的可以处理model数据的方法,而model是直接关联数据库的,所以可以理解为直接操作数据库的方法 //这里是查找主键为$id的项,然后返回一个model return view('articles.edit',compact('article')); }

以下是findOrFail的介绍

Model|Collection findOrFail(mixed $id, array $columns = array('*'))Find a model by its primary key or throw an exception.Parametersmixed $id array $columns Return ValueModel|Collection

创建edit的blade模板

resources/views/articles/edit.blade.php@extends('layout.app')@section('content') 

{{$article->title}}

//用这里来验证是否能够查找到$article的title信息 @if($errors->any()) @foreach($errors->all() as $error)
  • {{$error}}
  • @endforeach @endif@stop

    查看数据库

    id title content publish_at created_at updated_at5 我是一篇新文章 你好 2016-05-21 00:00:00 2016-05-21 07:32:48 2016-05-21 07:32:48

    在浏览器访问http://localhost:8000/articles/5/edit出来的是正确的title

    编辑PATCH method

    确认edit模板和edit方法是正常之后,再次修改edit模板

    resources/views/articles/edit.blade.php@extends('layout.app')@section('content') 

    {{$article->title}}

    {!! Form::open(['method'=>'PATCH','url'=>'/articles'.$article->id]) !!} //因为之前的提到的用resource路由,其中有一个路由是用PATCH方法的,所以在这里写 {!! Form::label('title', 'Title:') !!} {!! Form::text('title', null, ['class' => 'form-control']) !!} {!! Form::label('content', 'Content:') !!} {!! Form::textarea('content', null, ['class' => 'form-control']) !!} {!! Form::label('publish_at', 'publish_at:') !!} {!! Form::date('publish_at', date('Y-m-d'), ['class' => 'form-control']) !!} {!! Form::submit('发表文章',['class'=>'btn btn-primary form-control']) !!} {!! Form::close() !!} @if($errors->any()) @foreach($errors->all() as $error)
  • {{$error}}
  • @endforeach @endif@stop

    检查网页源代码

    < !DOCTYPE html> Laravel  

    我是一篇新文章

    关于Form-Model-Binding

     {!! Form::open(['method'=>'PATCH','url'=>'/articles'.$article->id]) !!} 

    改为

     //这里需要注意的是这个就是改为Form-Model-Binding{!! Form::model($article,['method'=>'PATCH','url'=>'/articles'.$article->id]) !!}

    Form-Model-Binding是将model和from进行绑定,这样可以实现自动将model的数据写入form表单,对于编辑页面,要出现编辑之前的数据的话,很有用。

    再次检查网页源码

    < !DOCTYPE html> Laravel  

    我是一篇新文章

    文档

    Route::resource和Form-Model-Binding_html/css

    Route::resource和Form-Model-Binding_html/css_WEB-ITnose:关于Route::resource app/Http/routes.phpRoute::group(['middleware' => ['web']], function () { Route::get('/articles','ArticlesController@index'); Route::get('/articles/create','Arti
    推荐度:
    标签: it 表单 html
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top