jasco-b / view-model
为 Yii2 的视图模型
1.0.2
2020-02-05 12:40 UTC
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-08 06:08:41 UTC
README
此视图模型由 Yii2 启发,灵感来自 laravel view model
安装
您可以通过 composer 安装此包
composer require jasco-b/view-model
用法
在 Yii2 或任何其他框架的 CRUD 操作中,通常需要开发者在创建和更新操作中使用相同的数据。例如
旧控制器
class PostController extends Controller { ... public function actionCreate() { $model = new Post(); $categories = Categories::find()->all(); ... return $this->render('create', [ 'model' => $model, 'categories' => $categories, ]); } public function actionUpdate($id) { $model = $this->findModel($id); $categories = Categories::find()->all(); ... return $this->render('update', [ 'model' => $model, 'categories' => $categories, ]); } }
如您所见,$categoreis 已在创建和更新操作中使用。您可以使控制器更加整洁,甚至可以将您的复杂逻辑添加到视图模型中。
视图模型
... use jascoB\ViewModel\ViewModel; class PostViewModel extends ViewModel { public $model; public function __construct($model) { $this->model = $model; } public function categories() { return $categories = Categories::find()->all(); } }
控制器
class PostController extends Controller { ... public function actionCreate() { $model = new Post(); ... return $this->render('create', new PostViewModel($model)); } public function actionUpdate($id) { $model = $this->findModel($id); ... return $this->render('update', new PostViewModel($model)); } }
为了在 Yii2 中使用视图模型,我们应该更改 config.php
return [ 'components' => [ 'view'=>[ 'class'=>'jascoB\ViewModel\Classes\View', ], ], ];