搜尋
首頁web前端html教學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','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')    <h1 id="article-title">{{$article->title}}</h1> //用这里来验证是否能够查找到$article的title信息    @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@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')    <h1 id="article-title">{{$article->title}}</h1>    {!! Form::open(['method'=>'PATCH','url'=>'/articles'.$article->id]) !!} //因为之前的提到的用resource路由,其中有一个路由是用PATCH方法的,所以在这里写            <!--- Title Field --->    <div class="form-group">        {!! Form::label('title', 'Title:') !!}        {!! Form::text('title', null, ['class' => 'form-control']) !!}    </div>    <!--- Content Field --->    <div class="form-group">        {!! Form::label('content', 'Content:') !!}        {!! Form::textarea('content', null, ['class' => 'form-control']) !!}    </div>    <!---  Field --->    <div class="form-group">        {!! Form::label('publish_at', 'publish_at:') !!}        {!! Form::date('publish_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@stop

检查网页源代码

< !DOCTYPE html><html><head>    <title>Laravel</title>    <!-- 新 Bootstrap 核心 CSS 文件 -->    <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"/></head><body>    <div class="container">    <h1 id="我是一篇新文章">我是一篇新文章</h1>    <form method="POST" action="http://localhost:8000/articles5" accept-charset="UTF-8"><input name="_method" type="hidden" value="PATCH"/><input name="_token" type="hidden" value="3maFAh6SfF8A7BfQ3CCtUsdCz8wjF9F5AAi99tb1"/>    //可以发现会自动生成一个input,里面是方法PATCH,通过这种hacker的方式来将一些自定义的method来使用,很方便            <!--- Title Field --->    <div class="form-group">        <label for="title">Title:</label>        <input class="form-control" name="title" type="text" id="title"/>    </div>    <!--- Content Field --->    <div class="form-group">        <label for="content">Content:</label>        <textarea class="form-control" name="content" cols="50" rows="10" id="content"></textarea>    </div>    <!---  Field --->    <div class="form-group">        <label for="publish_at">publish_at:</label>        <input class="form-control" name="publish_at" type="date" value="2016-05-24" id="publish_at"/>    </div>    <input class="btn btn-primary form-control" type="submit" value="发表文章"/>    </form>    </div>    </body></html>

关于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><html><head>    <title>Laravel</title>    <!-- 新 Bootstrap 核心 CSS 文件 -->    <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"/></head><body>    <div class="container">    <h1 id="我是一篇新文章">我是一篇新文章</h1>    <form method="POST" action="http://localhost:8000/articles5" accept-charset="UTF-8"><input name="_method" type="hidden" value="PATCH"/><input name="_token" type="hidden" value="3maFAh6SfF8A7BfQ3CCtUsdCz8wjF9F5AAi99tb1"/>            <!--- Title Field --->    <div class="form-group">        <label for="title">Title:</label>        <input class="form-control" name="title" type="text" value="我是一篇新文章" id="title"/> //title自动输入了    </div>    <!--- Content Field --->    <div class="form-group">        <label for="content">Content:</label>         <textarea class="form-control" name="content" cols="50" rows="10" id="content">你好</textarea> //内容也是    </div>    <!---  Field --->    <div class="form-group">        <label for="publish_at">publish_at:</label>        <input class="form-control" name="publish_at" type="date" value="2016-05-24" id="publish_at"/>    </div>    <input class="btn btn-primary form-control" type="submit" value="发表文章"/>    </form>    </div>    </body></html>
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML:建立網頁的結構HTML:建立網頁的結構Apr 14, 2025 am 12:14 AM

HTML是構建網頁結構的基石。 1.HTML定義內容結構和語義,使用、、等標籤。 2.提供語義化標記,如、、等,提升SEO效果。 3.通過標籤實現用戶交互,需注意表單驗證。 4.使用、等高級元素結合JavaScript實現動態效果。 5.常見錯誤包括標籤未閉合和屬性值未加引號,需使用驗證工具。 6.優化策略包括減少HTTP請求、壓縮HTML、使用語義化標籤等。

從文本到網站:HTML的力量從文本到網站:HTML的力量Apr 13, 2025 am 12:07 AM

HTML是一種用於構建網頁的語言,通過標籤和屬性定義網頁結構和內容。 1)HTML通過標籤組織文檔結構,如、。 2)瀏覽器解析HTML構建DOM並渲染網頁。 3)HTML5的新特性如、、增強了多媒體功能。 4)常見錯誤包括標籤未閉合和屬性值未加引號。 5)優化建議包括使用語義化標籤和減少文件大小。

了解HTML,CSS和JavaScript:初學者指南了解HTML,CSS和JavaScript:初學者指南Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的角色:構建Web內容HTML的角色:構建Web內容Apr 11, 2025 am 12:12 AM

HTML的作用是通過標籤和屬性定義網頁的結構和內容。 1.HTML通過到、等標籤組織內容,使其易於閱讀和理解。 2.使用語義化標籤如、等增強可訪問性和SEO。 3.優化HTML代碼可以提高網頁加載速度和用戶體驗。

HTML和代碼:仔細觀察術語HTML和代碼:仔細觀察術語Apr 10, 2025 am 09:28 AM

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代碼” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代碼”代碼“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML,CSS和JavaScript:Web開發人員的基本工具HTML,CSS和JavaScript:Web開發人員的基本工具Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

HTML,CSS和JavaScript的角色:核心職責HTML,CSS和JavaScript的角色:核心職責Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

HTML容易為初學者學習嗎?HTML容易為初學者學習嗎?Apr 07, 2025 am 12:11 AM

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能