vivre-tech/rest-renderer

For Yii2: Just like Controller::Action but only for having multiple rendering templates in same place for data models.

Installs: 7 233

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 3

Forks: 0

Open Issues: 0

Type:yii2-extension

1.0.0 2017-12-14 08:26 UTC

This package is not auto-updated.

Last update: 2024-04-16 00:23:28 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.

Latest Stable Version Total Downloads Build Status

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:

  1. 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:

  1. installed via command composer install you will have to execute in console/terminal: vendor/bin/phpunit
  2. installed via bre you will have to execute in console/terminal: phpunit