yii2-ledap

ledap框架的yii2封装

安装

推荐使用 composer来安装

输入:

composer require --prefer-dist ethercap/yii2-ledap "dev-master"

或在 composer.json 文件中加入如下内容:

"ethercap/yii2-ledap": "dev-master"

使用说明

简介

本代码主要用到如下框架:

起步

复制layout。在复制后,你可以编辑layout的内容。

代码自动生成

代码生成器与gii/crud的使用方法一致:

在运行后,你能够在浏览器中访问这些页面。生成的代码如下:

  1. xxController : 处理http请求的yii2 Controller.

  2. views/xx/*.php : 模板文件,用来渲染html.

  3. views/xx/*.api : Api接口文件,用来渲染接口.

  4. xx/web/xx/*.js : 模板文件中对应的js文件,它会被在view中渲染出,并带有一个hash串。

生成的文件结构如下所示:

代码文件列表

全局组件

1. loading

2. toast

toast是对vue-bootstrap的toast进行了封装,做了一些默认的配置及支持了html.

3. alert

alert是对vue-bootstrap的modal进行了封装,做了一些默认的配置及支持。

4. confirm

confirm是对vue-bootstrap的modal进行了封装,做了一些默认的配置及支持。

列表页

列表页的js有一个dataProvider来控制整个页面(注意:它与php的DataProvider并不是同一个东西)。

1.输入时刷新数据

我们可以在form-item上加一个事件侦听,这样当我们输入时,下面的表格可以自动搜索并刷新。

2. 一些DataProvider的API

3. grid

grid是一个ledap组件,可以通过传入columns和dataProvider来生成表格

如果你不满意默认的内容,你可以通过Vue Scoped slot来修改内容。组件会传输四个变量到scoped slot中:

  • model. 当前的model, 代表grid的一行。

  • column. 当前的colomn, 代表grid中的一列。

  • index. model在dp.models中的索引。dp.model[index] == model。

  • value. cloumn与model计算出来的结果。

你也可以使用dataProvider自己画view或使用list,而不是使用grid。

View&Update&Create

在页面中有type这个参数,可以被用来控制页面的显示。它可以是view, update或create。

1.model

model与yii2的form Model 对应。基本用法如下:

2.detail

detail组件与grid组件类似。我们可以使用columns来展示一个detail,它的写法也与grid一致。

与grid一样,我们也可以使用scoped slot来修改默认的页面。

3. form-item

当我们想要展示form时,form-item非常重要。它由四部分组成:

  • label

  • hint

  • input

  • error

we cant use like this:

有时,我们想用其它第三方写的vue组件,所以,我在这个包里写了一个示例。我使用了 vue2-datepicker来示例.

另外,我们需要在Vue中注册这个组件:

其它组件

1.select2 & SearchAction

有时,我们需要一个类似于select2的ajax suggestion。这个包也为你提供了:

  • SearchAction: 一个 php Action 来处理搜索的请求.

after all this config, we have an api "/xx/search" to search data from database.

在这些配置完成后,我们就拥有了一个api——"/xx/search"来从数据库中搜索数据。

  • select2 component: 一个vue组件来发起http请求。

2.upload & UploadAction

我们在php中引入js等依赖

在页面调用组件上传即可。

后端可以通过很简单的方式来处理, 文件在$_FILE中。

在数据库中,该数据对应的结构为:

高阶应用

自己实现vue组件/Ledap组件

在页面中,如果有一些元素总是重复,我们可以书写成组件方便复用,我们可以直接书写Vue组件,参见vue组件

ledap组件跟vue组件没有本质区别,但是引入了继承,下面我们来看一个例子:

我们一直使用formItem来做为form的包装器,现在我们想做一个formItem1, 但是把label和input的位置对调,我们可以这样做:

这样,我们可以在页面上看到效果了:

改用其它css框架

Tips

  1. 你需要了解Vue.

  2. 尽量少用yii2 widget.

  3. 所有你使用的组件都需要先注册。App.register(['xxx'], Vue);

  4. 你可以使用其它组件。

  5. 你可以通过修改AppAsset来替换全局模板或http请求

这个包,前后端并不是完全分离的。如果你想要使用npm来实现完全分离,直接使用ledap前端框架即可。

Last updated

Was this helpful?