viv-tech / rest-renderer
针对Yii2:类似于Controller::Action,但仅用于在同一位置对数据模型使用多个渲染模板。
1.0.0
2017-12-14 08:26 UTC
Requires
- php: >=5.4
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- phpunit/phpunit: 6.5.*
This package is not auto-updated.
Last update: 2024-09-17 02:12:04 UTC
README
此扩展允许在一个地方为数据模型提供多个渲染模板的能力。
有关许可信息,请查看LICENSE文件。
安装
安装此扩展的首选方法是使用composer。
运行以下命令之一:
php composer.phar require --prefer-dist vivre-tech/rest-renderer
或添加以下内容到您的composer.json文件的require部分:
"vivre-tech/rest-renderer": "*"
用法
示例
use vivretech\rest\renderer\DataRenderer; class DummyModelRenderer extends DataRenderer { /** * @param array $params * @return mixed */ public function renderMain($params = []) { return []; } public function renderSummary($model) { return [ 'name' => $model['name'], 'price' => $model['price'], ]; } public function renderDetailed($model) { return [ 'id' => $model['id'], 'name' => $model['name'], 'price' => $model['price'], 'created_at' => $model['created_at'], ]; } } $render = new DummyModelRenderer(); $productModel = [ 'id' => 1, 'name' => 'Product 1', 'price' => 100, 'created_at' => date('Y-m-d H:i:s') ]; /* Output JSON -> Dummy REST response. */ header("Content-Type: application/json;charset=utf-8"); echo json_encode([ 'productSummary' => $render->run('summary', [$productModel]), 'productDetailed' => $render->run('Detailed', [$productModel]), ]);
响应
{ "productSummary": { "name": "Product 1", "price": 100 }, "productDetailed": { "id": 1, "name": "Product 1", "price": 100, "created_at": "2017-12-14 08:25:06" } }
单元测试
如果您在开发环境中运行以下命令: composer install
,那么您将在/vendor/bin/phpunit
中找到phpunit
。
如果通过composer install
命令未安装phpunit
,请按照以下步骤操作:
- 在控制台/终端中运行
brew install phpunit
要测试,在项目的root
目录中,根据phpunit
的安装方式,您有两个选择来运行:
- 通过
composer install
安装,您需要在控制台/终端中执行:vendor/bin/phpunit
- 通过
bre
安装,您需要在控制台/终端中执行:phpunit