evondu/yii2-vue 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

evondu/yii2-vue

Composer 安装命令:

composer require evondu/yii2-vue

包简介

Yii2中使用Vue进行组件开发

README 文档

README

项目介绍

在Yii项目中使用Vue进行组件化开发。

安装方法

composer require evondu/yii2-vue

项目说明

YII2框架本身视图层组件(Widget)是以混编组件的形式设计,因此页面会被分割到多个文件中并且难以对JavaScript的分布做出限制,而Vue恰恰要求应用部分不能存在JavaScript,所以Vue难以直接在YII中应用起来,而本依赖就是用解决这个。其提供了一组导入辅助函数对个各文件中的JavaScript、Style进行压缩与分离,从而让Vue能在Yii项目中使用起来。

Yii与Vue结合使用

变量转化

  • 本库中提供将PHP变量转化成JavaScript变量的辅助函数,变量转化后可以便于Vue对其进行操作
  • 布尔型会被处理成字符串的1和0,目的是适配Yii的表单传值和处理
  • 变量转换使用yiivue\Import::value()(在视图层中使用)
    • 示例:yiivue\Import::value($this, $model, "data");
    • 第一个参数为yii\web\View对象,即视图层的$this
    • 第二个参数是要转换PHP变量
    • 第三个参数为转换成JavaScript后变量的名称

表单提交

  • Yii的默认表单提交方式为"同步跳转式提交"
  • 本库提供把JavaScript对象以表单形式提交的辅助函数,并已经注入到Vue的原型方法this.$yii.submit()
    • 示例:this.$yii.submit({'name':'test'}, "Demo");
    • 第一个参数为提交的JavaScript对象
    • 第二个参数为Yii中的模型名(用于迎合Yii的表单提交方式)
    • 示例执行后POST的数据为:Demo[name]=test
    • 并且此种提交方式支持Yii的CSRF认证

编写Vue组件(PHP混编组件)

实现概述

  • 组件的实现,扩展自Yii的$view->render($path, $params),故支持PHP参数传递和混编
  • 组件模板部分使用component-template标签,javascript和style部分照旧用scriptstyle标签
  • 组件导入使用yiivue\Import::component()(在视图层中使用)
    • 示例:yiivue\Import::component($this,'@app/views/components/avatar',[]);
    • 第一个参数为yii\web\View对象,即视图层的$this
    • 第二个参数为编写的组件
    • 第三个参数为PHP参数的key-value数组
  • 在Vue组件中template的值必须为:template: '{{component-template}}'(注意这里用单引号)
  • 可以配置好GII后用模板生成CRUD,然后对照其中的_form文件查看(此为一个完整混编Vue组件)

组件例子

  • 示例组件(路径:app/views/components/test.php):
<!-- 组件样式 -->
<style>
    .test{  color: red; }
</style>
<!-- 组件模板 -->
<component-template>
    <div class="test">
        {{value}} <?="支持PHP混编"?>
    </div>
</component-template>
<!-- 组件代码 -->
<script>
    Vue.component('test', {
        template: '{{component-template}}',
        model: { prop: 'value', event: 'change'},
        props:{
            'value':{ type: String, default: "Demo Component"}
        }
    });
</script>
  • 使用方法(在Yii的视图层使用):
<?php
yiivue\Import::component($this, '@app/views/components/test');
?>
<div id="app">
    <test></test>
</div>

<script>
    Vue.component('lte-content', {
       template: '{{component-template}}'
    });
</script>

项目架构

src
    assets/                 Yii的Asset类
    core/                   核心类库
    static/                 静态资源

参与贡献

  1. Fork 本项目
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

evondu/yii2-vue 适用场景与选型建议

evondu/yii2-vue 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 93 次下载、GitHub Stars 达 3, 最近一次更新时间为 2019 年 08 月 15 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 evondu/yii2-vue 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 evondu/yii2-vue 我们能提供哪些服务?
定制开发 / 二次开发

基于 evondu/yii2-vue 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 93
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-08-15