快速開始
安裝
你可以在命列列輸入以下指令安裝 Laravel:
composer create-project laravel/laravel
或者,你也可以從 Github Repository 下載,下一步則是 安裝Composer ,安裝完Composer後接下來在專案的根目錄執行 composer install
指令進行安裝,這個指令將會下載安裝 Laravel 所需要的套件
在安裝完 Laravel 之後,可以看一下專案目錄去熟悉目錄架構,app
目錄包含的資料夾有views(視圖)
、 controllers(控制器)
及 models(模型)
,您大多數的程式碼都在 app
的資料夾中進行撰寫。您也可以到 app/config
目錄看看,這裡提供您應用程式可以設定的選項。
路由
為了要開始我們的應用程式,讓我們建立我們第一個路由(route),在 Laravel 中最簡單的路由是封閉性的路由,打開 app/routes.php
檔案並在檔案下方加入下列路由規則:
Route::get('users', function()
{
return 'Users!';
});
現在如果你在瀏覽器網址列輸入 /users
的路由,你將會看到網頁輸出 Users!
的字串,太棒了!,你剛剛建立了你的第一個路由~
路由也可以附屬於控制器(Controller)類別,例如:
Route::get('users', 'UserController@getIndex');
這個路由告知了 Laravel ,任何對於網站的 /users
請求,將會導到 UserController
控制器類別中的 getIndex
方法,有關於更多的控制器路由資訊,可以參考 控制器(Controllers) 說明文件
建立視圖(Views)
下一步我們將建立一個簡單的view(視圖)去呈現我們使用者的資料,view檔案是放在 app/views
目錄,包含網頁應用程式的 HTML 程式碼,我們要在這個目錄建立 layout.blade.php
及 users.blade.php
這兩個 view 的檔案,首先我們先建立 layout.blade.php
的檔案內容:
<html>
<body>
<h1>Laravel Quickstart</h1>
@yield('content')
</body>
</html>
下一步我們建立 users.blade.php
的檔案內容:
@extends('layout')
@section('content')
Users!
@stop
有一些語法或對你來說會有點陌生,這是因為我們正在使用 Laravel 的樣板系統 : Blade
。 Blade 執行速度非常快,因為它是一個少數簡單的正規表示式,使用單純的PHP對樣板進行編譯,Blade 提供強大的功能,像樣板繼承(inheritance),以及一些典型的 PHP 控制結構,像 if
及 for
,其他詳情可以參考 樣板 說明文件
現在我們有我們的view了,讓我們回到我們 /users
的路由下,將原本回傳路由下回傳 Users!
變更為回傳 view 的內容:
Route::get('users', function()
{
return View::make('users');
});
太棒了,現在你已經設定了一個簡單的view,並引用了 layout 的 view ,讓我們開始處理資料庫層吧。
建立Migration
為了建立一個資料表去保存我們的資料,我們將使用 Laravel 的 Migration 系統,Migration 讓你能夠透過語意表達,去定義修改你的資料庫,而且可以將這些對資料庫的修改異動,輕易的與團隊中的其他人共享。
首先讓我們來設定資料庫連線吧,你可以在 app/config/database.php
的檔案中設定所有的資料庫連線。 Laravel是使用 MySQL 當作預設使用的資料庫,並保存資料於 app/database
資料夾。 你也可以變更要預設使用的 資料庫類型
為 sqlite
,並在資料庫設定檔案中設定 sqlite
連線的相關驗證資訊。
接下來我們使用 概要去建立我們的 Migration,在我們專案的根目錄執行下列指令:
php artisan migrate:make create_users_table
接下來到 app/database/migrations
目錄找到我們產生的 Migration 檔案,這個檔案會包含兩個方法:up
及 down
,在 up
方法中建立你想要對資料表做的異動,在 down
方法中則是做與 up
方法反向的資料表異動。
讓我們來定義 Migration 檔案,看起來會像下列這樣:
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->string('email')->unique();
$table->string('name');
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
接下來,我們可以從命令列執行我們的 Migration ,只需要在專案的根目錄執行下列 migrate
指令即可
php artisan migrate
如果你想要復原執行過的 Migration ,可以在命令列輸入 migrate:rollback
指令即可,而現在我們有一個資料表了,讓我們從資料表中來抓取一些資料吧!
Eloquent ORM
Laravel 擁有一個優秀的 ORM : Eloquent ,如果你使用過 Ruby on Rails 的框架,你會發現 Eloquent 有很熟悉的感覺,因為他遵循著 ActiveRecord ORM 風格的資料庫互動。
首先讓我們定義一個 Model(模型),一個 Eloquent 可以被用來使用資料庫的關聯查詢,就像在給予的列(row)資料中,表示在資料表中的資料,別擔心,你會很快地了解它的! Model 通常是存放在 app/models
目錄,讓我們在 Model 資料夾中定義一個 User.php
的 Model ,像這樣:
class User extends Eloquent {}
請注意,我們沒有告訴 Eloquent 要使用哪一個資料表, Eloquent 有很多種預設的規則,其中一個規則是使用 Model 名稱複數名稱 (User => Users) 當作是資料表的名稱,相當的方便!
使用你偏好的資料庫管理工作,在你的 users
資料表新增幾筆資料,我們將使用 Eloquent 去取得這些資料,並將資料傳給我們的 view。
現在我們去修改 /users
的路由規則,改成像這樣子:
Route::get('users', function()
{
$users = User::all();
return View::make('users')->with('users', $users);
});
讓我們來循序走過在這個路由的過程,首先 在 User
Model 中的 all
方法,會取得所有在 users
資料表的所有資料,下一步我們透過 with
方法傳遞這些資料給我們的 view, with
的方法接受一個 key 及 value 的資料,讓資料可以在 view 中被存取使用。
太棒了,現在我們準備在 view 中顯示使用者的資料了!
顯示資料
我們讓 view 可以透過 users
存取我們使用者的資料,所以我們可以像這樣去顯示使用者的資料:
@extends('layout')
@section('content')
@foreach($users as $user)
<p>{{ $user->name }}</p>
@endforeach
@stop
你可能會好奇在哪裡去找到我們的 echo
陳述式,當我們使用 Blade,你可以透過兩個大括號{{}}去列印資料,這相當的容易,現在你可以到 /users
路由下去看看你的資料表的使用者姓名了。
這僅僅是剛開始而已,在本次教學中,你已經看到基本的 Laravel 的框架了,但是還有更多令人興奮的東西等著我們去學,可以去閱讀 Eloquent ORM 及 樣板 教學文件去挖掘更深入更強大的功能。或許你會好奇 佇列 及 單元測試,話又說回來,或許你想要使用 IoC容器 展示可擴充性的架構,都是可以讓你選擇的!