Laravel-Administrator快速创建数据管理后台

说明

管理界面是基础设施中非常重要的一部分, 很常用的功能, 每一个成熟的框架, 都有其对应的解决方案, 如:

Laravel-Administrator 是 Laravel 的扩展包, 利用强大的 Eloquent ORM, 加上简单的配置信息, 快速生成数据管理后台.

在开发时间不充裕的情况下, 用很短的时间, 就能创建一个后台, 这个插件会让你在使用 Laravel 开发时, 感受到满满的幸福感感.

屏幕截图

安装

1. composer.json

"frozennode/administrator": "4.*"

2. install

composer update

3. provider

修改 app/config/app.php 文件, 在 providers 数组里面添加:

'Frozennode\Administrator\AdministratorServiceProvider',

4. package config

发布扩展包配置信息信息, 以下命令会生成文件 app/config/packages/frozennode/administrator/administrator.php

php artisan config:publish frozennode/administrator

至此, 安装完毕.

修改 administrator.php 配置信息

官方的文档在这 http://administrator.frozennode.com/docs/configuration

这里有个例子, 加上简单的注释, 此例子是 laravel-blog 项目的后台配置信息, 源码见这里 :

  1. <?php 
  2.  
  3. return array
  4.  
  5.     /** 
  6.      * 后台入口地址 
  7.      */ 
  8.     'uri' => 'admin'
  9.  
  10.     /** 
  11.      * 管理员后台名称, 在左上角显示 
  12.      */ 
  13.     'title' => 'Admin Panel'
  14.  
  15.     /** 
  16.      * Model 配置文件存放地 
  17.      */ 
  18.     'model_config_path' => app('path') . '/config/administrator'
  19.  
  20.     /** 
  21.      * 站点 `设置` 功能的配置文件存放地 
  22.      */ 
  23.     'settings_config_path' => app('path') . '/config/administrator/settings'
  24.  
  25.     /** 
  26.      * 这里是配置菜单的地方, 每一个元素代表了上面定义的 `model_config_path` 目录 
  27.      * 下有对应的文件, 如: 'categories' 对应 categories.php 文件, 这个规则对 
  28.      * 站点设置信息通用.  
  29.      * 
  30.      * 更多信息请见文档: http://administrator.frozennode.com/docs/configuration#menu  
  31.      *  
  32.      * @type array 
  33.      * 
  34.      *  array( 
  35.      *      'E-Commerce' => array('collections', 'products', 'product_images', 'orders'), 
  36.      *      'homepage_sliders', 
  37.      *      'users', 
  38.      *      'roles', 
  39.      *      'colors', 
  40.      *      'Settings' => array('settings.site', 'settings.ecommerce', 'settings.social'), 
  41.      *      'Analytics' => array('E-Commerce' => 'page.ecommerce.analytics'), 
  42.      *  ) 
  43.      */ 
  44.     'menu' => [ 
  45.         'categories'
  46.         'tags'
  47.         'posts'
  48.         'comments'
  49.         'users'
  50.     ], 
  51.  
  52.     /** 
  53.      * 后台权限判断, 如果返回 false 的话, 会自动跳转到 login_path 页面 
  54.      */ 
  55.     'permission'=> function() 
  56.     { 
  57.         return Auth::check(); 
  58.     }, 
  59.  
  60.     /** 
  61.      * 是否使用自定义后台首页, true 的话, 会使用 dashboard_view  
  62.      */ 
  63.     'use_dashboard' => false, 
  64.  
  65.     /** 
  66.      * 如果你想要自定义后台首页, 上面的 use_dashboard 改为 true, 并在此提供指定的 view 
  67.      */ 
  68.     'dashboard_view' => ''
  69.  
  70.     /** 
  71.      * 后台首页, 这里的值对应 menu 的元素, 与 'use_dashboard' => false, 配合使用 
  72.      */ 
  73.     'home_page' => 'posts'
  74.  
  75.     /** 
  76.      * 右上角 "返回首页" 点击后的跳转链接 
  77.      */ 
  78.     'back_to_site_path' => '/'
  79.  
  80.     /** 
  81.      * 登录链接, 当 `permission` 选项返回 false 的时候, 跳转到此页面 
  82.      */ 
  83.     'login_path' => 'login'
  84.  
  85.     /** 
  86.      * 是否在后台有退出按钮, 是的话填写 path, 否则填写 false 
  87.      */ 
  88.     'logout_path' => false, 
  89.  
  90.     /** 
  91.      * 当用户没有权限, 跳转到登录页面时, 会把用将要请求的页面放在 Session::get('redirect')  
  92.      */ 
  93.     'login_redirect_key' => 'redirect'
  94.  
  95.     /** 
  96.      * 全局默认每页显示多少数据 
  97.      */ 
  98.     'global_rows_per_page' => 20, 
  99.  
  100.     /** 
  101.      * 多语言支持, 这里配置的话, 右上角会出现多语言的选择菜单 
  102.      */ 
  103.     'locales' => array(), 
  104.  
  105. ); 

administrator 的后台数据配置文件

后台是根据 后台数据配置文件 生成的, 这些文件在上面 menu 选项里面 定义 .

根据上面的定义, 在 config 文件夹下创建 administrator 文件夹, 并创建对应的文件如以下:

  • categories.php
  • comments.php
  • posts.php
  • tags.php
  • users.php

内容请见源代码 - Laravel Blog 项目的后台数据配置文件

以下拿 posts.php 文件为例, 生成后台页面请参照文章开始的截图:

  1. <?php 
  2.  
  3. return [ 
  4.  
  5.     // 菜单里面显示的名字 
  6.     'title' => lang('Post'), 
  7.  
  8.     // 右上角有 `New $single` 的创建新内容的文字 
  9.     'single' => lang('Post'), 
  10.  
  11.     // 依赖于 Eloquent ORM 作数据读取和处理 
  12.     'model' => 'Post'
  13.  
  14.     // 显示页面 
  15.     'columns' => [ 
  16.  
  17.         // 当前列在数据库中的字段名称, 下同 
  18.         'id' => [ 
  19.             // 这个参数定义当前列的名称, 下同 
  20.             'title' => 'ID' 
  21.         ], 
  22.         'title' => [ 
  23.             'title' => lang('Title'), 
  24.         ], 
  25.         'body' => [ 
  26.             'title' => lang('Content'), 
  27.  
  28.             // 这个参数定义了是否支持排序, 下同 
  29.             'sortable' => false, 
  30.  
  31.             // 这是自定义输出内容, 如果不定义的话, 会使用字段对应的数据, 下同 
  32.             'output' => function($value
  33.             { 
  34.                 return make_excerpt($value); 
  35.             }, 
  36.         ], 
  37.         'user_name' => [ 
  38.             'title' => lang("Author"), 
  39.  
  40.             // 自定义字段, 读取对应关系里面的数据, 下同 
  41.             'relationship' => 'user'
  42.  
  43.             // 对应关系在这里显示的内容 
  44.             'select' => "(:table).username"
  45.         ], 
  46.         'category_name' => [ 
  47.             'title' => lang("Category"), 
  48.             'relationship' => 'category'//this is the name of the Eloquent relationship method! 
  49.             'select' => "(:table).name"
  50.         ], 
  51.         'comments_count' => [ 
  52.             'title' => 'Comments Count' 
  53.         ], 
  54.  
  55.         // 不指定 title 的话, 会使用字段作为 title 
  56.         'created_at'
  57.     ], 
  58.  
  59.     // 单点击选择单条数据的时候, 右边会出现编辑小视图, 这里定义了视图里面的字段 
  60.     'edit_fields' => [ 
  61.  
  62.         // 对应字段 
  63.         'title' => [ 
  64.  
  65.             // 标题 
  66.             'title' => lang('Title'), 
  67.  
  68.             // 可编辑字段的类型 
  69.             'type' => 'text' 
  70.         ], 
  71.         'category' => array
  72.  
  73.             // type 为 relationship 会根据 name_field 自动生成可选择的内容 
  74.             'type' => 'relationship'
  75.  
  76.             'title' => lang('Category'), 
  77.             'name_field' => 'name'
  78.         ) 
  79.     ], 
  80.  
  81.     // 过滤, 搜索 
  82.     'filters' => [ 
  83.         'title' => [ 
  84.             'title' => lang('Title'), 
  85.         ] 
  86.     ], 
  87.  
  88.     // 点击选择某条数据时候, 右上角的链接 
  89.     'link' => function($model
  90.     { 
  91.         return URL::route('posts.edit'$model->id); 
  92.     }, 
  93. ]; 

转载请注明:代码家园 » Laravel-Administrator快速创建数据管理后台

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)