vivre-tech / rest-renderer
For Yii2: Just like Controller::Action but only for having multiple rendering templates in same place for data models.
Installs: 11 244
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:yii2-extension
pkg:composer/vivre-tech/rest-renderer
Requires
- php: >=5.4
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- phpunit/phpunit: 6.5.*
This package is not auto-updated.
Last update: 2025-10-14 07:34:57 UTC
README
This extension provides the ability to have multiple rendering templates in one place for data models.
For license information check the LICENSE-file.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist vivre-tech/rest-renderer
or add
"vivre-tech/rest-renderer": "*"
to the require section of your composer.json.
Usage
Example:
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]), ]);
Response
{
"productSummary": {
"name": "Product 1",
"price": 100
},
"productDetailed": {
"id": 1,
"name": "Product 1",
"price": 100,
"created_at": "2017-12-14 08:25:06"
}
}
Unit Testing
If you run the following command: composer install in a dev environment then you will find phpunit in /vendor/bin/phpunit.
In case phpunit in not installed via command composer install, just fallow next steps:
- run in console/terminal
brew install phpunit
To test, in the root of the project, base on how phpunit is installed you will have two choices to run:
- installed via command
composer installyou will have to execute in console/terminal:vendor/bin/phpunit - installed via
breyou will have to execute in console/terminal:phpunit