laravel-admin 开发 bootstrap-treeview 扩展包

栏目: PHP · 发布时间: 6年前

内容简介:效果图:开发过程:

laravel-admin 扩展开发文档

https://laravel-admin.org/doc...

效果图:

laravel-admin 开发 bootstrap-treeview 扩展包

开发过程:

1、先创建 Laravel 项目,并集成laravel-admin,教程:

http://note.youdao.com/notesh...

2、生成开发扩展包

php artisan admin:extend csp/cascade --namespace=Csp\Cascade

其中, csp/cascade 是包名, CspCascade 是命名空间,生成的结构如下(删减版):

laravel-admin 开发 bootstrap-treeview 扩展包

3、删除没必要的目录,以及添加CSS、JS资源

laravel-admin 开发 bootstrap-treeview 扩展包

4、修改CascadeServiceProvider

4.1、修改视图的命名空间

if ($views = $extension->views()) {
    $this->loadViewsFrom($views, 'laravel-admin-cascade');
}

4.2、修改资源发布的位置,这里将资源发布到/public/vendor/laravel-admin-ext/cascade 目录下。

if ($this->app->runningInConsole() && $assets = $extension->assets()) {
    $this->publishes(
        [$assets => public_path('vendor/laravel-admin-ext/cascade')],
        'laravel-admin-cascade'
    );
}

4.3、编写视图文件,在views/目录下创建 cascade.blade.php

laravel-admin 开发 bootstrap-treeview 扩展包

<div class="form-group {!! !$errors->has($label) ?: 'has-error' !!}">
    <label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>
    <div class="{{$viewClass['field']}}">
        @include('admin::form.error')
        <div id="csp-bootstrap-tree"></div>
        <input type="hidden" name="{{$id}}" id="{{$id}}">
        @include('admin::form.help-block')
    </div>
</div>

4.4、编写 CascadeTreeView 继承 Field

<?php
/**
 * Created by PhpStorm.
 * User: chenshaoping
 * Date: 2019/2/10
 * Time: 10:02
 */

namespace App\Admin\Extensions\csp\cascade\src;


use Encore\Admin\Form\Field;

class CascadeTreeView extends Field
{
     
    protected $view = 'laravel-admin-cascade::cascade';

    protected static $css = [
        '/vendor/laravel-admin-ext/cascade/bootstrap-treeview.min.css'
    ];

    protected static $js = [
        '/vendor/laravel-admin-ext/cascade/bootstrap-treeview.min.js'
    ];
    public function render()
    {
        $this->script = <<<EOT
        var set = new Set();
var tree = [
  {
    text:"Parent 1",
    id:1,
    nodes: [
      {
        text:"Child 1",
        id:2,
        nodes: [
          {
            text:"Grandchild 1",
            id:3,
            nodes: [
                {
                    text:"122",
                    id:4,
                    nodes: [
                        {
                        text:"qweqw",
                        id:5,
                        }
                    ]
                }
            ],
          },
          {
            text:"Grandchild 2",
            id:6,
          }
        ]
      },
      {
        text:"Child 2",
        id:7,
      }
    ]
  },
  {
    text:"Parent 2",
    id:8,
  },
  {
    text:"Parent 3",
    id:9,
  },
  {
    text:"Parent 4",
    id:10,
  },
  {
    text:"Parent 5",
    id:11,
  }
]; 
$('#csp-bootstrap-tree').treeview({data: tree, showIcon: false,showCheckbox: true,'showTags':true});
$('#csp-bootstrap-tree').on('nodeChecked', function(event,node) {
    set.add(node.id);
    $('#{$this->id}').val(Array.from(set).toString());
});
$('#csp-bootstrap-tree').on('nodeUnchecked', function(event,node) {
    set.delete(node.id);
    $('#{$this->id}').val(Array.from(set).toString());
});
EOT;
        return parent::render();
    }
}

4.5、在laravel-admin 启动时,添加资源,添加扩展Form

Admin::booting(function () {
    Admin::js('vendor/laravel-admin-ext/cascade/bootstrap-treeview.min.js');
    Admin::css('vendor/laravel-admin-ext/cascade/bootstrap-treeview.min.css');
    Form::extend('cascade', CascadeTreeView::class);
});

5、准备本地安装

5.1、此时如果输入

composer require csp/cascade

会报以下错误

Could not find a version of package laravel-admin-ext/cascade matching your minimum-stability (stable). Require it with an
explicit version constraint allowing its desired stability.

原因很简单,composer的最小稳定性设置不满足,require 需要的是稳定版本,我们这里的确实 dev的版本;这里有2种解决方式:

1、修改项目的composer.json

"minimum-stability": "dev",
"prefer-stable": true,

2、修改扩展包的composer.json

"version": "1.0.0",

5.2、开始本地安装

composer require csp/cascade

5.3、发布资源

php artisan vendor:publish --provider="Csp\Cascade\CascadeServiceProvider"

此时会看到在 public/vendor/laravel-admin-ext/cascade 目录下面有静态资源。

6、使用

$form->cascade('parent_id','权限')->help('陈少平');

提交表单的时候,会将 parent_id 以 ,(逗号) 分割提交所有被选中的值。


以上所述就是小编给大家介绍的《laravel-admin 开发 bootstrap-treeview 扩展包》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创京东

创京东

李志刚 / 中信出版社 / 2015-5-1 / CNY 49.80

1998年,刘强东创业,在中关村经销光磁产品。2004年,因为非典,京东偶然之下转向线上销售。2014年,京东市值已超400亿美元,跻身全球前十大互联网公司之列。 这是一个听起来很传奇的创业故事,但只有当事人了解创业维艰。 刚转向电商时,传统企业前景光明,而电商看起来前途未卜,京东如何能毅然转型并坚持到底?资金匮乏的时候,京东靠什么说服投资人?在强大的对手面前,京东靠什么反超并一路领先......一起来看看 《创京东》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码