使用 Laravel 快速构建网站系列 —— 内容管理系统:Laravel 5 Boilerplate


1、简介

Laravel 5 Boilerplate不是一个网站,也是一个建站工具,是基于当前Laravel最新版本(Laravel 5.1.*)并集成Boilerplate的项目。

2、GitHub

https://github.com/rappasoft/laravel-5-boilerplate

3、功能特性

  • 自定义访问控制系统(认证/用户/角色/权限)
  • 第三方登录(GitHub/Facebook/Twitter/Google)
  • 通过邮箱验证用户
  • 重新发送确认邮件
  • 登录次数限制(登录失败情况下)
  • 后台管理
    • 用户列表
    • 激活/冻结用户
    • 软删除&永久删除用户
    • 禁止用户
    • 重新发送确认邮件
    • 修改用户密码
    • 创建/管理角色
    • 创建/管理权限
    • 创建/管理权限组
    • 管理用户角色/权限
    • 权限依赖
  • 默认响应式布局
  • 前后端控制器
  • 用户面板
  • 使用 Admin LTE主题的管理员面板
  • 命名空间路由
  • 自带Form/HTML门面
  • 默认表单转化为表单帮助方法
  • 通过通用组件管理布局文件
  • Laravel Elixir 3.0
  • 使用Elixir编译CSS并自动将其置于HTML头部
  • 使用Elixir编译JS并自动将其置于HTML尾部
  • 帮助函数
  • JavaScript/jQuery片段
  • Bootstrap 3(LESS/SASS)
  • HTML5 Boilerplate v5.0
  • Font Awesome (LESS/SASS)
  • 全局消息/异常处理
  • 表单宏(状态和国家下拉框,可轻松扩展)
  • 社会化登录认证集成
  • Laracast生成器
  • Stripe封装类
  • Active Menu
  • PHP转化为JavaScript
  • ARCANEDEV日志查看器
  • 本地化,目前支持英语、意大利语、葡萄牙语(巴西)、俄语以及瑞典语等等
  • 前后端语言选择菜单
  • 头像
  • 标准
    • 干净的控制器
    • Repository/Contract实现
    • 请求类
    • 事件/处理器
    • 整个应用分割成前端/后端
    • 处处本地化

4、安装

5、访问控制系统

配置文件

应用路由中间件

内置的路由中间件允许你通过角色或权限实现登录认证:

下面的中间件处理boilerplate:

  • access.routeNeedsRole
  • access.routeNeedsPermission

创建自己的中间件

如果你想要创建属于自己的中间件,可以使用如下方法:

Access默认使用当前登录用户,你还可以:

Blade扩展

可以定义一个blade扩展命令将访问控制应用到页面数据的显示与否:

接收角色名称或ID

接收角色名称或ID数组

接收角色或角色ID数组并且只有用户拥有提供的全部角色时才返回true

接收单个权限名称或ID

接收权限名称或ID数组

接收权限或权限ID数组并且用户拥有提供的全部权限时才返回true

注意:你还可以使用@else用于if/else语句

如果你想要显示或隐藏特定区块,可以在布局文件中这样做:

你还可以追加更多blade扩展命令到App\Providers\AccessServiceProvider@registerBladeExtensions

6、权限依赖

权限依赖允许你告诉系统某个权限基于一个或多个其它权限。

例如:如果用户有创建用户权限,那么还要具备查看后台和查看访问管理的权限,否则他们不能到达创建用户界面。因此我们说创建用户权限依赖于查看后台和查看访问管理权限。

你可以在每个权限依赖设置中指定该权限依赖于哪些其他权限。

7、社交媒体

要配置社交媒体登录,添加你的凭证到.env文件。重定向必须遵循这个约定:http://mysite.com/auth/login/SERVICE。目前支持的社交媒体包括github, facebook, twitter, 和google,每一个的登录链接内置于login.blade.php

如果你在本地locahost获取了cURL error 60错误,查看这些指导说明

8、PHP转化为JavaScript

PHP->JavaScript转换器已经包含在本项目中,配置文件是config/javascript.php

默认情况下JavaScript变量绑定到前端布局文件frontend/layouts/master.blade.php,因此你可以在任何前端控制器绑定任何JavaScript方法。

如果你需要在前端和后端控制器都绑定变量,应该创建一个全局总布局文件,并且使用前端/后端布局文件作为其子文件。再然后可以在javascript.bind_js_vars_to_this_view配置选项指定当前布局。

javascript()帮助函数已经添加到全局因此你不再需要在控制器中引入其它文件,只需要像这样调用该方法:

这是一个FrontendController@index的示例,并且可以在frontend.index视图文件中打印出来。

9、可能出现的问题及解决办法

如果由于某种原因导致出错,试试下面的解决办法:

删除composer.lock文件

运行dumpautoload命令:

如果上面的修复失败,并且命令行报错,错误信息指向compiled.php,则删除storage/framework/compiled.php文件。

如果上面的办法都没有奏效,那么只能给我们报告错误了。


<< 上一篇: 快速构建 RESTful API 以及现代化 Web 应用的 Laravel 原型项目 —— Someline

>> 下一篇: 使用 Laravel 快速构建网站系列 —— Laravel 5 Angular Material Starter