Laravel View composer 介紹
Laravel - View Composer
在開始介紹 View composer 之前
首先關於 View 的一些用法為,指定 Template 以及要帶入的參數
Continue Reading在開始介紹 View composer 之前
首先關於 View 的一些用法為,指定 Template 以及要帶入的參數
Continue ReadingVoyager 在管理員登入後,Dashboard 就會出現三個預設的 Widgets
這裡記錄客製化 Widgets 的方式
首先,開啟 config/voyager.php
Laravel 再遇到錯誤時,多數會拋出錯誤在介面顯示,並且中斷
這時可以透過 try catch 來捕捉拋出錯誤,自定義要做什麼處理
下方式簡易的錯誤處理範例:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Exception;
class ErrortestController extends Controller
{
public function index(){
try {
throw new Exception('When Error Happened');
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
這裡列出 Exception 可用的方法
$e->getMessage(); //返回錯誤訊息
$e->getCode(); //返回錯誤代碼
$e->getFile(); //返回錯誤文件名稱
$e->getLine(); //返回發生錯誤的行數
$e->getTrace(); //backtrace()
$e->getTraceAsString(); //格式化成字串的 getTrace
建立 ApiSupport 來處理 api 錯誤
<?php
namespace App\Supports;
use Carbon\Carbon;
class ApiSupport
{
/**
* Api response 回傳格式
*
* @param array $DataSet
*
* @return object $oResult 回傳值
* @author Adam
* @date 2019/01/22
*/
public static function jsonResponseFormat($DataSet='')
{
$oCurrentTime = Carbon::now();
//預設json返回格式
$aDefaultDataset = [
//可以設定在 .env
"program"=> "my production",
"version"=> "1.2.3",
"release"=> "45",
//動態參數
"datetime"=> $oCurrentTime,
"timestamp"=> strtotime($oCurrentTime->toDateTimeString()),
"status"=> "",//success
"code"=> 200,
"message"=> "OK",
"error"=> false,
"error_message"=> "",
"data"=> [
"rotues"=> [
"method"=>"GET",
"path"=> "/users",
"description"=> "Get user data"
],
"message"=> "Hello world"
]
];
$oResult = array_merge($aDefaultDataset, $DataSet);
return $oResult;
}
}
json回應就可以直接引用
Continue Reading對於 Voyager 建立關係的項目中,這裡舉例子來說明:
以送養人可以擁有多隻寵物,對於這些寵物則對應同一個送養人
這裡我們希望在新增寵物時,可以下拉選單選取他所屬的送養人是誰
送養人會自動產生關聯,得知他一共擁有多少隻寵物
送養人 (guardian) 會擁有許多寵物 (Adoptee) ,Adoptee 的 Model 空間命名位置 : App\Adoptee
從哪一列…? Adoptee 被引用於(reference) Guardian? guardian_id
顯示向詳細訊息
顯示 Adoptee: name
寵物 (adoptee) 原始送養人 (guardian) ,Guardian 的Model空間命名位置: App\Guardian
從哪一列…? Adoptee 被引用於(reference) Guardian? guardians_id
選取項詳細訊息
顯示 Guardian: name
保存 Guardian: id
Continue Reading這裏參考 The 2018 Mighty Laravel Application 20 Optimization Ideas Checklist 列出提升 laravel 應用程式性能的 20 項目
Continue Reading改寫 Voyager BREAD Views 的方法,可區分改寫指定的 BREAD 或者全部的 BREAD
首先,在 resources/views/vendor/voyager/ 位置,建立 slug 資料夾
資料夾名稱等同於當初你建立 BREAD 所設定的 slug-name
Continue Reading
根據官方描述,大致整理以下介紹重點:
Voyager 是一個 admin interface,可以很輕易的為你的 app 建構 CRUD 功能,建構 Menu 選單,以及管理 media 檔案 ,此外,在管理介面的 Database Manager 可以直接用來管理資料庫及資料表,BREAD (Browse, Read, Edit, Add, & Delete) 功能則是可以很簡便的就直接設定資料表欄位在哪些時候要出現,以及他的功能屬性是什麼(文字欄位,選單,圖片..),該欄位的驗證規則…(詳細請參考 BREAD說明)
不是傳統的內容管理系統(CMS),部落格平台,當然也不是 wordpress 😜
雖然如此,你仍可以把 voyager 用來作為 CMS或 blog,一切都是可以由你自行決定
只要透過 Laravel+Voyager,你就能建立多種組合後台,並且是非常簡易的就能夠達成這些目的。
接下來,說明基本的安裝流程:
composer require tcg/voyager
在開發上傳檔案套件過程,原本測試圖片上傳功能都正常
但是當上傳 pdf, video 時,卻遇到 getMimeType 發生 The file "" does not exist 的錯誤
查詢原因,原來是在 php 原始設定的最大上傳限制設定太低
因此,開啟 php.ini 設定 upload_max_filesize 調整為 10Mb 即可正常上傳
Continue ReadingLaravel Telescope 是一個全面監控的 debug 助理,是由 Laravel 開發團隊所推出的一項功能,支援 Laravel 5.7.7 以上的版本。
其中包括以下的項目都包含在 watcher :
Continue Reading前面提到,在 l5-repository 有兩種方式可以實作 Presenter
第一種,可以直接建立 Transformrer 並且設定他來操作 Presenter class 第二種,可以直接在 model 實作 Transform 的 interface,並且 use 預設的 Presenter ModelFractarPresenter,也能達到同樣的效果
開始使用 Presenter 之前,必須 Requires Fractal
Continue Readingcomposer require prettus/l5-repository
設定 ServiceProvider
如果是 >= laravel5.5 ,ServiceProvider 會自動設定好
要在 config/app.php 增加
'providers' => [
...
Prettus\Repository\Providers\RepositoryServiceProvider::class,
],
發布設定
設定完成多出一個設定檔: /config/repository.php
php artisan vendor:publish --provider "Prettus\Repository\Providers\RepositoryServiceProvider"
Continue Reading
Lumen 主旨在建立一個快速微服務框架
在預設的功能中,僅保留少數 laravel 原生功能項目
舉例來說,Lumen 不提供 artisan make:controller
因此,在建立 controller 時候需要手動方式生成
在 controller 裏已經有準備好 controller.php 讓你方便複製
這裡則是要介紹,如何透過擴充 lumen generator ,將 laravel 多數 command 能在 lumen 中使用
Continue Reading在這裡記錄一下 FastCGI 與 PHP-FPM 的關係
FastCGI 是一個協定,從字面上其實就能看到 Fast + CGI,意思就是加速CGI
CGI 是一個協定,在webserver接收到請求時,會跟請求內容進行對應處理,再返回對應文件給瀏覽器
Continue ReadingLaravel 的 requests 可以將請求所需要的驗證進行分離,在這裡主要談一談 Requests 的建立方法 ,以及針對它進行測試的一些方式進行說明。
首先,建立一個 Requests
Continue Reading