vivre-tech / rest-renderer
For Yii2: Just like Controller::Action but only for having multiple rendering templates in same place for data models.
Installs: 8 994
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- php: >=5.4
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- phpunit/phpunit: 6.5.*
This package is not auto-updated.
Last update: 2024-11-12 03:00:05 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 install
you will have to execute in console/terminal:vendor/bin/phpunit
- installed via
bre
you will have to execute in console/terminal:phpunit