aki/yii2-vue

for yii2 web application

Maintainers

👁 akbarjoody

Package info

github.com/akbarjoudi/yii2-vue

Type:yii2-extension

pkg:composer/aki/yii2-vue

Statistics

Installs: 10 171

Dependents: 1

Suggesters: 0

Stars: 69

Open Issues: 2

0.6.9 2021-09-18 14:35 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

LGPL-3.0+ e7f0e5ae5d18dd5d44ac650ce934ce01a541b7b5

  • akbar joudi <akbar.joody.woop@gmail.com>

yii2 yii2vue yii2-vue vuejs akbar-joudi vue.js

This package is auto-updated.

Last update: 2026-06-19 01:07:07 UTC


README

for yii2 web application

👁 Latest Stable Version

👁 Total Downloads

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require aki/yii2-vue "*"

or add

"aki/yii2-vue": "*"

to the require section of your composer.json file.

After installing the extension, first install the vuejs framework

Either run

# Move to folder
cd ./vendor/aki/yii2-vue/

and run command

# install deps
npm install

Usage

Once the extension is installed, simply use it in your code by :

<?php
use aki\vue\Vue;
?>
<?php Vue::begin([
 'id' => "vue-app",
 'data' => [
 'message' => "hello world!!",
 'seen' => true,
 'todos' => [
 ['text' => "akbar joudi"],
 ['text' => "aref mohhamdzadeh"]
 ]
 ],
 'methods' => [
 'reverseMessage' => new yii\web\JsExpression("function(){"
 . "this.message = this.message.split('').reverse().join(''); "
 . "}"),
 ],
 'watch' => [
 'message' => new JsExpression('function(newval, oldval){
 console.log(newval)
 }'),
 ]
]); ?>

 <p>{{ message }}</p>
 <button v-on:click="reverseMessage">Reverse Message</button>

 <p v-if="seen">Now you see me</p>


 <ol>
 <li v-for="todo in todos">
 {{ todo.text }}
 </li>
 </ol>

 <p>{{ message }}</p>
 <input v-model="message">


<?php Vue::end(); ?>

Add Vue Router

simply use it in your code by :

<?php
use aki\vue\Vue;
use aki\vue\VueRouter;
use aki\vue\VueComponent;
?>
<?php Vue::begin([
 'id' => "vue-app",
 'vueRouter'=> VueRouter::widget([
 'routes' => [
 [
 'path' => '/foo',
 'component' => new VueComponent([
 'template' => '@vueroot/views/foo.php',
 'components' => [
 'yoo-component'=> new VueComponent([
 'template' => '<div>yoo!!! {{id}}</div>',
 'props' => [
 'id'
 ]
 ])
 ],
 ])
 ],
 [
 'path' => '/bar',
 'component' => new VueComponent([
 'template' => '<div>hello</div>'
 ])
 ]
 ]
 ])
]); ?>

 <router-link to="/foo">Go to Foo</router-link>
 <router-link to="/bar">Go to Bar</router-link>

 <!-- route outlet -->
 <?= VueRouter::$outlet ?><!-- <router-view></router-view> -->
<?php Vue::end(); ?>