Skip to content

zhangsong/laravel-admin

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

laravel-admin

laravel-admin是一个能帮助你快速搭建后台的工具,简单的几步操作,就能构建出功能强大的后台。

laravel-admin基于以下开源工具或服务:

#Screenshot

grid

form

安装

//laravel 5.1
composer require encore/laravel-admin "1.1.*"

//laravel 5.2
composer require encore/laravel-admin "1.2.*"

然后把ServiceProvider加入config/app.php中:

Encore\Admin\Providers\AdminServiceProvider::class

运行以下命令完成安装:

php artisan vendor:publish
php artisan admin:install

打开http://localhost/admin/访问后台,使用默认用户名admin和密码admin登陆。

#使用

默认安装目录为app/Admin

该目录下的routes.php是路由文件,用来配置后台路由:

<?php

$router = app('admin.router');

$router->get('/', function() {
    return view('admin::index');
});

$router->resources([
    'administrators' => AdministratorController::class
]);

menu.php用来配置左侧菜单:

<?php

return [
    [
        'title' => '首页',
        'url'   => '/',
        'icon'  => 'fa-bar-chart'
    ],
    [
        'title' => '管理员',
        'url'   => '/administrators',
        'icon'  => 'fa-tasks'
    ],
];

controllers目录是控制器目录,用来存放控制器文件。

###创建控制器

如果要创建User模型的数据管理控制器,可使用以下命令:

php artisan admin:make UserController --model=\\App\\User

该命令会在app\Admin\controllers目录下面创建UserController文件,然后在routes.php加入:

$router->resources([
    'users'           => UserController::class,  //加入这一行
    'administrators'  => AdministratorController::class
]);

最后在menu.php中加入访问入口:

  [
    'title' => '用户管理',
    'url'   => '/users',
    'icon'  => 'fa-user'
  ],

然后就能在左侧菜单中看到users资源的访问链接了。

###Admin\Grid

Admin\Grid用来构建基于bootstarp table的数据列表,在控制器中:

return Admin::grid(User::class, function(Grid $grid){

    $grid->id('ID')->sortable();
    
    //使用动态方法
    $grid->name('用户名');
    //或者使用column()方法:$grid->column('name', '用户名');
    
    //批量添加字段
    $grid->columns('email', 'username' ...);
    
    //关联模型数据
    $grid->column('profile.mobile', '手机');
    //或者使用:$grid->profile()->mobile('手机');
    
    //控制输出显示内容
    $grid->column('profile.mobile', '手机')->value(function($mobile) {
      return "+86 $mobile";
    });
    
    //使用sortable()添加可排序字段
    $grid->column('profile.age', '年龄')->sortable();
    
    $grid->created_at();
    $grid->updated_at();
    
    //添加行回调函数
    $grid->rows(function($row){
      if($row->id <=10) {
        $row->style('color:red');
      }
    });
    
    //添加数据列表过滤器
    $grid->filter(function($filter){
    
        // sql: ... WHERE `user.name` LIKE "%$name%";
        $filter->like('name', '名字');
        
        // sql: ... WHERE `user.email` = $email;
        $filter->is('emial', '名字');
        
        // sql: ... WHERE `user.created_at` BETWEEN $start AND $end;
        $filter->between('created_at', '创建时间')->datetime();
    });
});

###Admin\Form

Admin\Form用来构建数据Form,在控制器中:

return Admin::form(User::class, function(Form $form){

    $form->options(['title' => '用户修改']);
    
    $form->id('id', 'ID');
    $form->text('name', '用户名')->rules('required');
    $form->email('email', '邮箱')->rules('required|email');
    
    $form->password('password', '密码')->rules('required');
    
    // has one relation, user has one profile
    $form->url('profile.homepage', '个人主页');

    $form->ip('profile.last_login_ip', '上次登录ip');
    $form->datetime('profile.last_login_at', '上次登录时间');
    
    // 添加默认值
    $form->color('profile.color', '颜色')->default('#a34af4');

    $form->image('profile.avatar', '头像')/*->size(300, 300)*/;
    $form->file('profile.document', '文档')->rules('mimes:doc,docx,xlsx');
    $form->mobile('profile.mobile', '手机号');
    $form->text('profile.address', '地址');
    $form->date('profile.birthday', '生日');
    $form->radio('profile.gender', '性别')->values(['m' => '女', 'f'=> '男'])->default('m');

    // see http://lbs.qq.com/
    $form->map('profile.lat', 'profile.lng', '位置');
    
    // see http://ionden.com/a/plugins/ion.rangeSlider/en.html
    $form->slider('profile.age', '年龄')->options(['max' => 50, 'min' => 20, 'step' => 1, 'postfix' => '岁']);

    $form->datetime('created_at', '创建时间');
    $form->datetime('updated_at', '更新时间');

    $form->datetimeRange('profile.created_at', 'profile.updated_at', '时间线');

    // belongs to many relation
    $form->multipleSelect('friends', '好友')->options(User::all()->lists('name', 'id'));
    
    // belongs to many relation
    $form->checkbox('roles', '角色')->values(Role::all()->lists('display_name', 'id'));
    
    // 添加保存回调函数
    $form->saving(function($form) {
        $form->password = bcrypt($form->password);
    });
});

#License

WTFPL

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 34.7%
  • CSS 33.1%
  • PHP 32.2%