Laravel 允許我們在 Artisan 中加入自己的指令,而我們每次在建立一個 Vue 元件檔時,動作及內容都差不多,這些重覆的流程就應該把它們自動化。
Vue.js (12) - 實戰 CRUD 使用 Laravel + Vue
接續前一篇 Vue.js (11) - 在 Laravel 5.4 中使用 Vue 2.1,這一篇將要實戰如何寫出一個 CRUD 的應用,也就是對資料庫做建立、讀取、更新及刪除的動作。
升級 Laravel Homestead
Laravel Homestead 最新版本已經支援熱騰騰的 PHP 7.1,趕快來更新 Homestead 吧。如果還沒用過 Homestead,可以先看看 Laravel 開發環境使用 Homestead。
使用 Composer 管理 PHP 套件
因為不要重造輪子,所以我們就要借助別人的輪子來打造自己的工具,當借助的輪子越來越多,管理起來就會有點麻煩,不管是版本的更新或是大家都使用某個熱門的輪子而造成重覆,這些都需要一個工具來管理,這就是 Composer 要幫我們解決的事。
Laravel 開發環境使用 Homestead
Laravel 為了讓開發者有更佳的開發環境,使用了 Vagrant 來打造 Homestead,一個整合了開發 Laravel 所需服務的 Vagrant Box。
Laravel 學習筆記(24) - Sublime Text 3 的 Laravel 外掛
我目前開發網站用的編輯器是 Sublime Text 3 (後簡稱ST)。有些針對 Laravel 設計的外掛很好用,可以加快開發速度。因為有些外掛不支援 ST 2,所以強烈建議使用 ST 3。
在 ST 3 要安裝套,要先安裝套件管理器 Package Control,如果已經裝過則可略過此步驟,這個只要裝一遍。
先到 packagecontrol.io 複製安裝程式碼,然後回到 ST,開啟 console,快速鍵 ctrl + `(在esc下方)或選單 View >Show Console。貼上剛剛複製的程式碼,按 Enter,等一下就會安裝完成。
在 ST 3 要安裝套,要先安裝套件管理器 Package Control,如果已經裝過則可略過此步驟,這個只要裝一遍。
先到 packagecontrol.io 複製安裝程式碼,然後回到 ST,開啟 console,快速鍵 ctrl + `(在esc下方)或選單 View >
Laravel 學習筆記(23) - 移除 public 結尾
假設網站目錄為 blog,完整路徑為
方法 3 會做成
在 Laravel 中,主要對外的目錄為 public,所以這裡的設定方法,全都離不開將連入的網址指向 public 目錄的動作。
/var/www/blog
;再假設主網域是 myblog.com
,要將 laravel 網站以 www 加主網域的方式呈現,可以使用方法 1 或方法 2 達成(要設定 DNS A 主機為 www)。方法 3 會做成
www.myblog.com/blog
,如果要變成 blog.myblog.com
並不需要使用方法 3,只要設定 DNS 的 CNAME 為 blog,再使用方法 2 去設定即可。在 Laravel 中,主要對外的目錄為 public,所以這裡的設定方法,全都離不開將連入的網址指向 public 目錄的動作。
Laravel 學習筆記(22) - 寄信 (mail)
Laravel 使用 SwiftMailer library 來處理寄信的功能,並在其上提供一個 API 讓操作更簡單。設定檔在
app/config/mail.php
,driver 預設是 'smtp'。如果你要使用 PHP 的 mail 函式,可以改為 'mail',其他可用的還有 'sendmail'、'mailgun'、'mandrill'及'log'。設定成 log 的話,Laravel 就不會真的寄信,而是把要寄出的信寫入 log 檔。
Laravel 學習筆記(21) - 分頁 (Pagination)
在 Laravel 中要實作分頁只要兩行!!
在 HomeController@index 中,原本的
在 HomeController@index 中,原本的
$posts = Post::all();
是取得全部的資料,現在我們設定為一頁只顯示 3 筆,所以改成:
$posts = Post::paginate(3);
完成,這樣一頁就只會顯示 3 筆資料。
Laravel 學習筆記(20) - 多國語言 (Localication)
Laravel 提供 Lang 類別讓你方便取用不同語言的字串。檔案存放在 app/lang 目錄下,在依不同語言各自建立目錄。例如:
app/lang/en
app/lang/tw
app/lang/jp
app/lang/fr
語言目錄名稱可自訂。目錄中可放置多個 php 檔,每個 php 內都是做回傳一個陣列的動作。
Laravel 學習筆記(19) - 登入驗證 (Authentication)
Laravel 已經實作了登入機制,所以我們可以很快速的建立登入功能。驗證設定檔在 app/config/auth.php,而預設在 app/models 已經建立了一個 User.php 的 Model。在 auth.php 中的設定是 model 名稱為
!重要,在建立
User
,table 名稱為 users
,這些可以改成自己想要的。!重要,在建立
users
資料表時,必須建立一個 remember_token
的字串欄位,長度 100、nullable。這個欄位是用來儲存 session 的 token。在 migrations 檔中可以使用
$table->rememberToken();
來建立。
Laravel 學習筆記(18) - 資料庫之 Migrations & Seeding
Laravel 官網上的說明,Migrations 是一種資料庫版本控制的型式。它可以讓開發團隊在修改資料庫綱要(schema)時仍保持最新的狀態。Migrations 通常會使用 Schema Builder 來管理。
在終端機中,進入網站目錄,輸入指令:php artisan migrate:make create_users_table 會產生類似
在終端機中,進入網站目錄,輸入指令:php artisan migrate:make create_users_table 會產生類似
app/database/migrations/2014_12_11_081527_create_posts_table.php
這樣的檔案。前面會加上日期及時間戳記,時間戳記在每次執行指令時都會不同。也就是說,之後在執行 migrate 動作時,它是會依序執行的。如果你有要調動執行的順序,只要改前面的日期,或時間戳記,就能改變被執行的順序。
Laravel 學習筆記(16) - 資料庫之 Eloquent ORM
Eloquent ORM 讓資料庫中的每個資料表都對應到 Model,你可以透過 Model 和資料表互動。要定義的模型 (Eloquent Model) 預設放在 app/models 目錄下。例如 app/models/Post.php (字首大寫) ,它的內容如下:
<?php
class Post extends Eloquent{}
在 Eloquent 中,會自動以 Model 的類別名稱的小寫、複數名稱去找尋對應的資料表,所以 Post model 對應的資料表就會是 posts 。
Laravel 學習筆記(15) - 資料庫之 Query Builder
Laravel 提供了方便易用的資料庫查詢機制,基於 PDO 參數綁定(parameter binding),保護應用程式免於 SQL資料隱碼 (SQL injection) 攻擊。
Laravel 學習筆記(14) - Form 表單資料驗證
Laravel 包含了一個 Validation 類別,專門用來處理資料驗證。使用 Validator 類別的 make() 方法來建立驗證:
Validator::make(data, rules, messages, customAttributes)
參數說明:
- data:陣列。是準備要驗證的資料。
- rules:陣列。驗證規則。
- messages:陣列。驗證失敗後要回傳的訊息。
Laravel 學習筆記(13) - Form 表單進階
在 View 中建立表單的方法
{{ Form::open(['url' => 'foo']) }}
//...
{{ Form::close() }}
使用 open 及 close 來建立一個表單。參數是以陣列的方式設定,method 預設為 POST,如果要指定其他的方法,可自行增加,例如:
{{ Form::open(['url' => 'foo', 'method' => 'put']) }}
Laravel 學習筆記(12) - Blade 樣板系統
Laravel 使用 Blade 樣板系統,所有的 Blade 樣板都要以 .blade.php 結尾。
在「微型部落格」專案中,我們一共建立了 4 個 view:
在「微型部落格」專案中,我們一共建立了 4 個 view:
- home.blade.php
- create.blade.php
- edit.blade.php
- show.blade.php
Laravel 學習筆記(11) - Route 進階
在微型部落格專案中,我們的 routes.php 內容是這樣:
Route::get('post', 'HomeController@index');
Route::get('post/create', 'HomeController@create');
Route::post('post', 'HomeController@store');
Route::get('post/{id}', 'HomeController@show');
Route::get('post/{id}/edit', 'HomeController@edit');
Route::put('post/{id}', 'HomeController@update');
Route::delete('post/{id}', 'HomeController@destroy');
目前只有一個編輯文章的功能。假如你的網站功能很多,Route 肯定會多到難以維護,其實有幾個方法可以加以調整,本節將專注在 Route 的使用上。