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