2017 © Pedro Peláez
 

library laravel-view

根据注释生成表结构

image

houdunwang/laravel-view

根据注释生成表结构

  • Thursday, July 12, 2018
  • by houdunwang
  • Repository
  • 1 Watchers
  • 1 Stars
  • 50 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

介绍

根据模型自动生成页面表单,提高网站开发速度。, (*1)

houdunren.com @ 向军大叔, (*2)

项目地址:https://packagist.org/packages/houdunwang/laravel-view, (*3)

安装组件

安装组件, (*4)

composer require houdunwang/laravel-view

生成配置文件, (*5)

php artisan vendor:publish --provider="Houdunwang\Structure\ServiceProvider"

组件会生成配置文件 config/hd_tables.php, (*6)

发布视图, (*7)

系统会在 resources/views/vendor/HdLaravelView 目录生成表单布局视图(不需要开发者使用)。, (*8)

php artisan vendor:publish --provider="Houdunwang\LaravelView\ServiceProvider"

前端库, (*9)

部分视图组件使用Vue.js 构建,需要安装前端库完成。, (*10)

请参考文档 https://github.com/houdunwang/houdunren-vue-form 进行安装配置。, (*11)

处理器

系统会为每个表生成 Handle.php 处理器文件,处理器用于对字段进行处理。, (*12)

处理器用于对表单的结构定义并生成表单模板。, (*13)

php artisan hd:handle 模型 [目录] [--force]

[目录] 生成文件的目录,不设置目录时使用配置项的值, (*14)

[--force] 强制覆盖生成(慎重使用), (*15)

创建处理器

我们可以通过修改数据表注释的形式,快速生成表单处理器,请看下面是栏目表的字段声明。, (*16)

下面是 categories 表的数据迁移内容, (*17)

Schema::create('categories', function (Blueprint $table) {
    $table->increments('id');
    $table->timestamps();
    table->string('title')->comment('栏目名称|input');
    $table->string('description')->nullable()->comment('栏目描述|textarea');
    $table->tinyInteger('iscommend')->default(0)->comment('推荐|radio|1:是,2:否');
    $table->tinyInteger('city')->default(0)->comment('城市|checkbox|1:中国,2:北京,3:广东');
    $table->string('pic')->nullable()->comment('栏目图片|image');
    $table->integer('pid')->default(0)->comment('父级栏目|select|1:电影,2:游戏,3:汽车');
});

下面以 categories 表的 title 字段设置进行说明。, (*18)

 `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '栏目名称|input',

上面是title字段的声明,COMMENT属性以 | 分隔 中文描述|模板表单类型|选项, (*19)

表单类型 表注释 说明
input 表单名称\ input |
textarea 表单名称\ textarea |
image 表单名称\ image |
radio 表单名称\ radio|1:男,2:女 |
checkbox 表单名称\ checkbox|1:中国,2:北京,3:广东 |
select 表单名称\ select|1:电影,2:游戏,3:汽车 |
simditor 编辑器

严格使用英文字符, (*20)

下面是生成Admin 模块的 Category 模型处理器。, (*21)

php artisan hd:handle Category Article

系统将在 Modules/Article/Tables 目录中创建处理器文件, (*22)

└── CategoryHandle.php  #栏目模型处理器

如果处理器已经存在,可以加上 --force 参数强制生成, (*23)

php artisan hd:handle Category Article --force

表单处理

通过上面的命令我们已经创建了处理器文件,下面来对处理器文件内容进行解释。, (*24)

在处理器中以 _ + 字段名 定义的方法,会用于格式化字段使用,下面对字段进行说明。, (*25)

因为有些表单需要 https://github.com/houdunwang/houdunren-vue-form 组件的处理,所以请先行安装并配置正确这个组件。, (*26)

数据结构

下面是表单数据结构的说明,返回合法的数据结构才会正确渲染页面。, (*27)

变量 说明 适用场景
title 中文标题
value 表单值
name 字段变量名 不需要设置
type 表单类型
options 选项值 适用于 radio//select
disabled 禁用 表单的 disabled 属性
  1. 所有变量支持以匿名函数返回
  2. $this->model 为当前记录模型

文本框

public function _title()
{
    return [
        'title'=> '栏目名称',//表单标题
        'type'=> 'input',//表单类型
    ];
}

文本域

public function _description()
{
    return [
        'title'=> '栏目描述',//表单标题
        'type'=> 'textarea',//表单类型
    ];
}

单选框

public function _iscommend()
{
    return [
        'title'=> '推荐',//表单标题
        'type'=> 'radio',//表单类型
        'options'=> function () {
            return [
                ['title' => '是', 'value' => 1],
                ['title' => '否', 'value' => 0]
            ];
        },
    ];
}

复选框

public function _city()
{
    return [
        'title'       => '城市',//表单标题
        'type'        => 'checkbox',//表单类型
        'options'     => function () {
            $values = explode(',', $this->model['city']);
            return [
                ['title' => '北京', 'value' => 1,'checked'=>in_array('北京',$values)],
                ['title' => '上海', 'value' => 2,'checked'=>in_array('上海',$values)],
                ['title' => '广东', 'value' => 3,'checked'=>in_array('广东',$values)],
            ];
        },
    ];
}

单张图片

需要正确配置 https://github.com/houdunwang/houdunren-vue-form 上传参数。, (*28)

public function _pic()
{
    return [
        'title'=> '栏目图片',//表单标题
        'type'=> 'image',//表单类型
    ];
}

列表框

public function _pid()
{
    return [
            'title'       => '父级栏目',//表单标题
            'type'        => 'select',//表单类型
            'options'     => function () {
                $data = [[
                'id'=>0,'title' => '顶级栏目', 'value' => 0, 
                'selected' => false, 'disabled' => false
                ]];
                $res=[];
                foreach ($this->model->get() as $cat) {
                    $res[] = [
                        //option文本描述
                        'title'    => $cat['title'],
                        //options值
                        'value'    => $cat['id'],
                        //选中的选项
                        'selected' => $this->model->pid == $cat['id'],
                        //不允许选择自身
                        'disabled' => $this->model->id == $cat['id'],
                    ];
                }
            return $res;
        },
    ];
}

自定义模板

如果对系统提供的表单模板不满意,只需要在返回 _view 变量声明自定义的模板。, (*29)

public function _title()
{
    return [
        'title'=> '栏目名称',//表单标题
        'type'=> 'input',//表单类型
        '_view'=> 'form.input'//将使用 resources/views/form/input.blade.php 渲染
    ];
}

渲染视图

使用处理器可以渲染出页面需要的表单元素。, (*30)

<?php namespace App\Http\Controllers;

use App\Category;
use App\Tables\CategoryHandle;

class HomeController extends Controller
{
    public function create(Category $Category)
    {
        $handle = new CategoryHandle($Category);
        $html   = $handle->render();

        return view('home', compact('html'));
    }
}

系统根据 App\Tables\CategoryHandle 处理器结合模型 Category 生成页面视图。, (*31)

当组件有数据时即编辑时,页面视图会自动添加上数据内容。, (*32)

通过以下代码模板中调用,就构建出视图了。, (*33)

{!! $html !!}

处理器方法

获取字段列表

$handle = new ContentHandle(new Content);
$handle->getListColumns() 

获取默认值

学用于后台列表页显示字段内容, (*34)

$handle = new ContentHandle(new Content);
$handle->value(Content::find(1),'title')

第一个参数为模型,第二个为字段名, (*35)

如果处理器存在 _title_value 命名方法,调用该方法返回值,否则返回模型默认值,图片时以 img 标签实现。, (*36)

The Versions

12/07 2018

dev-master

9999999-dev http://www.houdunren.com/

根据注释生成表结构

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

houdunwang 后盾人 向军老师 laravel-view

12/07 2018

v1.0.6

1.0.6.0 http://www.houdunren.com/

根据注释生成表结构

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

houdunwang 后盾人 向军老师 laravel-view

08/07 2018

v1.0.5

1.0.5.0 http://www.houdunren.com/

根据注释生成表结构

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

by 后盾网向军

houdunwang 后盾人 向军老师 laravel-view

08/07 2018

v1.0.3

1.0.3.0 http://www.houdunren.com/

根据注释生成表结构

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

by 后盾网向军

houdunwang 后盾人 向军老师 laravel-view

07/07 2018

v1.0.2

1.0.2.0 http://www.houdunren.com/

根据注释生成表结构

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

by 后盾网向军

houdunwang 后盾人 向军老师 laravel-view

30/06 2018

v1.0.1

1.0.1.0 http://www.houdunren.com/

根据注释生成表结构

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

by 后盾网向军

houdunwang 后盾人 向军老师 laravel-view