Laravel Study(Package)

開始

之前有說 vender 底下都是放模組,這些模組都是別人寫好的

你可以去以下網站查詢有哪些模組可用

packagist

packalyst

選好需要的模組就可以用 composer 安裝

以下示範安裝兩個模組

1
2
"filp/whoops": 出現錯誤訊息時,畫面更漂亮
"barryvdh/laravel-debugbar": 畫面底部出現 debug 工具列,方便開發時 debug

首先在 composer.json 修改

1
2
3
4
5
6
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.*",
"filp/whoops":"~1.0",
"barryvdh/laravel-debugbar": "^2.0"
},

composer.json 是用 json 格式寫的,有時候你寫太快或複製錯誤會造成 json 格式錯誤

所以修改完之後你可以在專案目錄下 composer validate 驗證你的 composer.json 有沒有問題

沒有問題會出現 ./composer.json is valid

驗證正確後下 composer update ,composer 就會幫我們下載這兩個模組

下載完成你可以看到 vender 資料夾底下出現 filp 和 barryvdh ,裡面就是我們需要的模組

但是目前模組還不能啟用,還需要做一些設定

Provider

Provider 就是提供服務的意思,在 Laravel 中,有 Laravel 系統本身的 Provider

也有開發者自行建立的 Provider,簡單來說 Provider 分兩種

  1. Service Providers

  2. Application Service

Service Providers 就先不管他,Application Service 位置在 app\Providers

預設中有 4 個 Providers 在裡面,但有 Providers 之後

我們還要去設定,讓 Laravel 啟動時要開啟這些 Providers

設定的地方在 config\app.php,開啟之後你可以看到 providers 陣列

就表示 Laravel 啟動時會開啟那些 Providers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'providers' => [

/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
.......

/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
.......
],

你可以下指令建立自己的 Provider

1
php artisan make:provider ProviderName

下完之後在 app\Providers 下面就會多出一個 Providers 檔案

回到 laravel-debugbar,目前這個模組放在 vendor 下面

要使用他就要把它加到 provider 下面,所以修改 providers 陣列

1
2
3
4
'providers' => [
.......
Barryvdh\Debugbar\ServiceProvider::class,
],

加完之後再開啟首頁就會看到底下有一個 debugbar 了

另外在 config\app.php 下面的 aliases 加上

1
2
3
4
5
'aliases' => [
......
'View' => Illuminate\Support\Facades\View::class,
'Debugbar' => Barryvdh\Debugbar\Facades::class,
],

另外我們還要修改一些地方才能使用 whoops,打開 app\Exceptions\Handler.php

最下面加上一個 function

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    public function render($request, Exception $e)
{
return parent::render($request, $e);
}

/**
* Create a Symfony response for the given exception.
*
* @param \Exception $e
* @return mixed
*/
protected function convertExceptionToResponse(Exception $e)
{
if (config('app.debug')) {
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);

return response()->make(
$whoops->handleException($e),
method_exists($e, 'getStatusCode') ? $e->getStatusCode() : 500,
method_exists($e, 'getHeaders') ? $e->getHeaders() : []
);
}

return parent::convertExceptionToResponse($e);
}

}

現在在網址故意亂輸入路徑,例如 http://localhost/LaravelProject/public/errorTest

你會看見錯誤訊息畫面變比較漂亮

2016-08-12_142912.png

另外你可以把以上兩個模組在 composer.json 位置改放在 require-dev

當之後放到正式主機後,執行 composer install –no-dev 就不會安裝這兩個模組

Laravel 說明

中文官方網站

英文官方網站

影片教學

參考教學-Laravel Dojo