Yii2 component: yii2-gon. Push variables from PHP to JS.
Dec 6, 2015, 3:31:36 PMThis component publishes json serialisable data as 'key -> value' from PHP code into global JS variable window.gon
.
Why?
The need for such an extensions came while working on web apps with mixed approach: rich JavaScript GUI on web page, but each page is reloaded and most of bussiness logic is still on the backend side.
The simples solution for a quick prototyping is pushing a data from PHP controller to global JS variable. That makes you free from a lot of REST API getters (you can make a lot without an API at all). So I did the first protype of this extension during "EU Web Challenge 2015" tasks coding. And now publish it as a standalone package.
Idea is inspired by Ruby gem gon
https://github.com/gazay/gon (the name is taken from it too. "GON" authors - in case of any naming issues, just ping me :))
Install
Via Composer
$ composer require ijackua/yii2-gon
Configure
Add component to application config
`
php
'components' => array(
'gon' => 'ijackua\gon\GonComponent'
),
And to app `bootstrap` section
php
$config = array(
'bootstrap' => array('gon'),
...
Full component configuration example
```php
'components' => array(
'gon' => array(
'class' => 'ijackua\gon\GonComponent',
'jsVariableName' => 'gon',
'globalData' => ['g1' => 1, 'g2' => '2'],
'showEmptyVar' => true,
)
),
Usage
Anywhere in your app push
key -> value
\Yii::$app->gon->push('someObj', ['a'=>'b']);
\Yii::$app->gon->push('str', 'hello');
On JS side you will get
`
js
> window.gon
>> Object
someObj: Object
{
a: "b"
}
str: "hello"
## TODO
* Make optional non-global usage. AMD, CommonJS modules.