摘要:接下來執(zhí)行遷移即可通用布局通用布局首先是博客首頁,定義路由控制器視圖博客首頁訪問下網(wǎng)站根目錄,顯示博客首頁,框架基本搭建完成了。首先是通用布局通用布局里面除了使用之外,還使用了,用于加載其他模板。
5. 博客的通用布局 初始化 創(chuàng)建控制器、模型、遷移
博客的核心是文章,可以先來實(shí)現(xiàn)和文章有關(guān)的功能,根據(jù)前幾節(jié)的介紹可知,我們至少需要?jiǎng)?chuàng)建這幾類:
PostsController:控制器
Post:模型
create_posts_table:遷移任務(wù)
雖然可以分別創(chuàng)建,但是也可以批量進(jìn)行創(chuàng)建,只需要在創(chuàng)建 Model 的時(shí)候指定即可:
$ php artisan make:model Post -mc
不過創(chuàng)建的控制器為單數(shù)形式 PostController,我們需要手動(dòng)將文件名和類名改成復(fù)數(shù)的。
創(chuàng)建表格接下來是生成 posts 表,通過遷移來完成:
// /database/migrations/2017_04_12_124622_create_posts_table.php public function up() { Schema::create("posts", function (Blueprint $table) { $table->increments("id"); $table->string("title"); $table->body("text"); $table->timestamps(); }); }
一開始,為了便于操作,我們只包含了標(biāo)題和內(nèi)容兩個(gè)基本字段。接下來執(zhí)行遷移即可:
$ php artisan migrate通用布局 通用布局
首先是博客首頁,定義路由:
/routes/web.php Route::get("/posts","PostsController@index");
控制器:
/app/Http/Controllers/PostsController.php public function index() { return view("posts.index"); }
視圖:
/resources/views/posts/index.blade.phpDocument 博客首頁
訪問下網(wǎng)站根目錄,顯示「博客首頁」,框架基本搭建完成了。現(xiàn)在,可以回顧下,我們之前所創(chuàng)建的視圖,每個(gè)視圖都包括了一些共同的東西,比如頭部、尾部等,造成大量的重復(fù)工作。Laravel 提供了優(yōu)雅的解決方案,首先,我們創(chuàng)建一個(gè)頁面用于存放這些共同的東西:
/resources/views/layouts/master.blade.php博客首頁 @yield("content")
@yield 指令相當(dāng)于一個(gè)占位符,這就意味著,其他頁面只需要繼承該頁面,就可以共享該頁面的內(nèi)容,同時(shí)也可以定義具體的 content 以滿足不同的顯示:
/resources/views/posts/index.blade.php @extends("layout") @section("content") 博客首頁 @stop
子模板要聲明繼承于哪個(gè)模板,使用 @extends 指令。同時(shí),使用@section 與 @stop 來定義各自的自己的 content 的內(nèi)容。
@yield 也可以定義默認(rèn)值,如果子模板不繼承的話就會(huì)顯示該默認(rèn)值
@yield("title","默認(rèn)首頁")
如果子模板既要繼承父模板的內(nèi)容,也要加載自己的內(nèi)容,通用視圖里需要使用以下語法:
@section("sidebar") 這是側(cè)邊欄 @show
繼承時(shí)使用 @parent 代表加載父模板的內(nèi)容:
@section("sidebar") @parent 自定義內(nèi)容 @endsection使用 Bootstrap Blog 模板
接下來,我們使用 Bootstrap Blog 模板來創(chuàng)建博客的前臺(tái),該模板的效果如圖所示:
我們根據(jù)上圖劃分來對(duì)源代碼進(jìn)行分割。首先是通用布局:
/resources/views/layouts/master.blade.phpBlog Template for Bootstrap @include("layouts.nav") @include("layouts.header");@include("layouts.footer")@yield("content") @include("layouts.siderbar")
通用布局里面除了使用 @yield 之外,還使用了 @include,用于加載其他模板。
導(dǎo)航:
/resources/views/layouts/nav.blade.php
頭部:
/resources/views/layouts/header.blade.phpThe Bootstrap Blog
An example blog template built with Bootstrap.
側(cè)邊欄:
/resources/views/layouts/siderbar.blade.php
底部:
/resources/views/layouts/footer.blade.php
最后是博客的樣式:
/public/css/blog.css /* * Globals */ @media (min-width: 48em) { html { font-size: 18px; } } body { font-family: Georgia, "Times New Roman", Times, serif; color: #555; } h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6 { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: normal; color: #333; } /* * Override Bootstrap"s default container. */ .container { max-width: 60rem; } /* * Masthead for nav */ .blog-masthead { margin-bottom: 3rem; background-color: #428bca; -webkit-box-shadow: inset 0 -.1rem .25rem rgba(0,0,0,.1); box-shadow: inset 0 -.1rem .25rem rgba(0,0,0,.1); } /* Nav links */ .nav-link { position: relative; padding: 1rem; font-weight: 500; color: #cffffdeb; } .nav-link:hover, .nav-link:focus { color: #fff; background-color: transparent; } /* Active state gets a caret at the bottom */ .nav-link.active { color: #fff; } .nav-link.active:after { position: absolute; bottom: 0; left: 50%; width: 0; height: 0; margin-left: -.3rem; vertical-align: middle; content: ""; border-right: .3rem solid transparent; border-bottom: .3rem solid; border-left: .3rem solid transparent; } /* * Blog name and description */ .blog-header { padding-bottom: 1.25rem; margin-bottom: 2rem; border-bottom: .05rem solid #eee; } .blog-title { margin-bottom: 0; font-size: 2rem; font-weight: normal; } .blog-description { font-size: 1.1rem; color: #999; } @media (min-width: 40em) { .blog-title { font-size: 3.5rem; } } /* * Main column and sidebar layout */ /* Sidebar modules for boxing content */ .sidebar-module { padding: 1rem; /*margin: 0 -1rem 1rem;*/ } .sidebar-module-inset { padding: 1rem; background-color: #f5f5f5; border-radius: .25rem; } .sidebar-module-inset p:last-child, .sidebar-module-inset ul:last-child, .sidebar-module-inset ol:last-child { margin-bottom: 0; } /* Pagination */ .blog-pagination { margin-bottom: 4rem; } .blog-pagination > .btn { border-radius: 2rem; } /* * Blog posts */ .blog-post { margin-bottom: 4rem; } .blog-post-title { margin-bottom: .25rem; font-size: 2.5rem; } .blog-post-meta { margin-bottom: 1.25rem; color: #999; } /* * Footer */ .blog-footer { padding: 2.5rem 0; color: #999; text-align: center; background-color: #f9f9f9; border-top: .05rem solid #e5e5e5; } .blog-footer p:last-child { margin-bottom: 0; }
現(xiàn)在,訪問 /posts,就可以看到整個(gè)頁面效果了 :)
Blog Template for Bootstrap
Laravel 的 Blade 模板引擎 | Laravel 5.4 中文文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22705.html
摘要:將上述的一系列查詢進(jìn)行封裝模型到了這一步,我們基本上實(shí)現(xiàn)了文章歸檔的功能。但是有一個(gè)問題,文章歸檔實(shí)際上包括在通用視圖中,這就意味著,網(wǎng)站的所有請(qǐng)求都需要返回,否則就會(huì)報(bào)錯(cuò)。數(shù)據(jù)庫之?dāng)?shù)據(jù)庫請(qǐng)求構(gòu)建器中文文檔的視圖功能中文文檔 首先,要實(shí)現(xiàn)的是按照日期來統(tǒng)計(jì)文章,原始的 SQL 如下: select year(created_at) year, monthname(c...
摘要:最適合入門的初級(jí)教程二看這篇文章的時(shí)候你需要安裝好配置好本地環(huán)境環(huán)境搞定后咱來說的下載這里先解決一些童鞋可能有的疑惑的版本更新的那么快從到現(xiàn)在的了我應(yīng)該下載那個(gè)學(xué)習(xí)呢新出的版本的文檔資料豐富么作為一個(gè)過來人可以大膽的說學(xué)習(xí)最新版本沒問題除了 最適合入門的 Laravel 初級(jí)教程 (二) 看這篇文章的時(shí)候;你需要安裝好 composer ;配置好本地環(huán)境; 環(huán)境搞定后; 咱來說lara...
摘要:基本功能創(chuàng)建文章的第一步是用戶發(fā)請(qǐng)求,然后返回創(chuàng)建文章的頁面。實(shí)際上,會(huì)報(bào)錯(cuò)添加保護(hù)雖然我們完成了基本功能,但是提交請(qǐng)求的時(shí)候還是會(huì)報(bào)錯(cuò),其實(shí)這是防止攻擊。假如違反了規(guī)則,錯(cuò)誤信息會(huì)自動(dòng)被保存在閃存的中,即只對(duì)下一次請(qǐng)求生效。 基本功能 創(chuàng)建文章的第一步是用戶發(fā)請(qǐng)求,然后返回創(chuàng)建文章的頁面。 路由:處理用戶「創(chuàng)建文章」的請(qǐng)求 /routes/web.php Route::get(/po...
摘要:的安裝與使用是什么是的一個(gè)依賴管理工具。它以項(xiàng)目為單位進(jìn)行管理,你只需要聲明項(xiàng)目所依賴的代碼庫,會(huì)自動(dòng)幫你安裝這些代碼庫。 Composer 的安裝與使用 Composer 是什么 Composer 是 PHP 的一個(gè)依賴管理工具。它以項(xiàng)目為單位進(jìn)行管理,你只需要聲明項(xiàng)目所依賴的代碼庫,Composer 會(huì)自動(dòng)幫你安裝這些代碼庫。 安裝 Composer Mac 下的安裝只需要在命令行...
摘要:但是服務(wù)通常由服務(wù)提供者來管理的。小結(jié)通過上述的例子,基本上可以理解服務(wù)容器和服務(wù)提供者的使用。懂得了服務(wù)容器和服務(wù)提供者,理解門面也就不難了。 自動(dòng)依賴注入 什么是依賴注入,用大白話將通過類型提示的方式向函數(shù)傳遞參數(shù)。 實(shí)例 1 首先,定義一個(gè)類: /routes/web.php class Bar {} 假如我們?cè)谄渌胤揭褂玫?Bar 提供的功能(服務(wù)),怎么辦,直接傳入?yún)?shù)即...
閱讀 817·2019-08-30 15:54
閱讀 445·2019-08-30 12:51
閱讀 2027·2019-08-29 16:28
閱讀 2847·2019-08-29 16:10
閱讀 2334·2019-08-29 14:21
閱讀 412·2019-08-29 14:09
閱讀 2135·2019-08-23 16:13
閱讀 1240·2019-08-23 13:59