使用Laracasts/Presenter優雅地解決視圖數據格式化難題

在開發 laravel 應用時,我經常遇到需要在視圖中展示一些經過格式化的數據。例如,我需要將用戶的注冊時間顯示為“X天前”的格式,或者將用戶的名字和姓氏拼接成完整的姓名。如果直接在 Blade 模板中編寫這些邏輯,會導致模板變得臃腫不堪,難以維護。如果將這些邏輯放在 Model 中,又會使 Model 承擔過多的職責,違反了單一職責原則。

這時,laracasts/presenter 就派上了大用場。它允許你創建一個 presenter 類,專門用于處理視圖數據的格式化邏輯。

安裝 Laracasts/Presenter 非常簡單,只需要使用 composer

composer require laracasts/presenter

接下來,你需要創建一個 Presenter 類。例如,如果你有一個 User 模型,你可以創建一個 UserPresenter 類:

<?php  namespace AppPresenters;  use LaracastsPresenterPresenter;  class UserPresenter extends Presenter {     public function fullName()     {         return $this->entity->first_name . ' ' . $this->entity->last_name;     }      public function registeredAtHuman()     {         return $this->entity->created_at->diffForHumans();     } }

在這個 Presenter 類中,你可以定義各種方法來格式化你的數據。$this->entity 屬性可以訪問到你的模型實例。

然后,在你的模型中使用 LaracastsPresenterPresentableTrait trait,并指定你的 Presenter 類:

<?php  namespace AppModels;  use IlluminateDatabaseEloquentModel; use LaracastsPresenterPresentableTrait;  class User extends Model {     use PresentableTrait;      protected $presenter = 'AppPresentersUserPresenter'; }

現在,你就可以在你的視圖中使用 Presenter 類來格式化數據了:

<h1>Hello, {{ $user->present()->fullName }}</h1> <p>Registered {{ $user->present()->registeredAtHuman }}</p>

$user->present() 方法會返回你的 Presenter 實例,你可以通過它來調用 Presenter 類中定義的方法。

使用 Laracasts/Presenter 的優點:

  • 代碼清晰: 將視圖數據的格式化邏輯從視圖和模型中分離出來,使代碼更易于閱讀和理解。
  • 易于維護: 如果你需要修改數據的格式化方式,只需要修改 Presenter 類即可,無需修改視圖或模型。
  • 可測試性: Presenter 類可以獨立進行單元測試,確保數據的格式化邏輯正確無誤。
  • 提高開發效率: 減少視圖模板的復雜度,將視圖展示相關的邏輯集中到一個地方,方便團隊協作開發

總之,Laracasts/Presenter 是一個非常實用的 Laravel 擴展包,可以幫助你編寫更清晰、更易于維護的代碼。如果你正在開發 Laravel 應用,強烈建議你嘗試使用它。

Composer在線學習地址:學習地址

以上就是使用Laracasts/Presenter優雅地解決視圖

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享