laravel(4.2) +Zizaco
操作步骤:https://github.com/Zizaco/entrust/tree/1.0
这篇博客说的蛮详细的:http://blog.boolw.com/?p=241
简化后的步骤
1.在根项目composer.json下require键下添加以下代码(注意:在”laravel/framework”: “4.2.*”,后追加逗号):
"zizaco/entrust": "1.2.*@dev"
2.执行下面命令
$ composer update
3.在你的config/app.php添加'Zizaco\Entrust\EntrustServiceProvider'的结束$providers
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Zizaco\Entrust\EntrustServiceProvider',
),
4.在config/app.php后面添加'Entrust' => 'Zizaco\Entrust\EntrustFacade'到$aliases
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
...
'Entrust' => 'Zizaco\Entrust\EntrustFacade',
),
5.设置的属性值config/auth.php。这些值将使用entrust来引用正确的用户表和模型.
6.现在生成entrust迁移,它将生成<timestamp>_entrust_setup_tables.php迁移。目录在你当前执行的项目下的 manage\database\migrations 里
$ php artisan entrust:migration
7.运行下面的语句,生产相关联的四张表
$ php artisan migrate
注意:
SQLSTATE[HY000]: General error: 1005 Can't create table 'laravelbootstrapstarter.#sql-42c_f8' (errno: 150) (SQL: alter table `assigned_roles` add constraint assigned_roles_user_id_foreign foreign key (`
user_id`) references `users` (`id`)) (Bindings: array (
))
也许在这步创建assigned_roles表,会报外键管理错误:你可以检查下,用户表的主键是否设置 UNSIGNED属性,或是id列在你的用户表没有user_id和assigned_roles字段。并且都是INT(10)。 生产的四张数据表解释:
roles - 用户组信息表;
assigned_roles - 用户和用户组之间的对应关系;
permissions - 权限信息表;
permission_role - 权限和用户组之间的对应关系.
8.创建模型
a.创建一个角色模型的例子app/models/Role.php:
<?php use Zizaco\Entrust\EntrustRole; class Role extends EntrustRole
{ }
b.创建一个权限模型的例子app/models/Permission.php:
<?php use Zizaco\Entrust\EntrustPermission; class Permission extends EntrustPermission
{ }
c.接下来,使用HasRole在你现有的特征User模型。例如:
<?php
use Zizaco\Entrust\HasRole;
class User extends Eloquent /* or ConfideUser 'wink' */{
use HasRole; // Add this trait to your user model
...
这将会奏效,使关系Role和下面的方法roles, hasRole( $name ), can( $permission ),ability($roles, $permissions, $options)在你的User模型。
9.别忘了dump composer autoload
$ composer dump-autoload
二.使用
1.让我们首先创建以下Role和Permission:
$owner = new Role;
$owner->name = 'Owner';
$owner->save(); $admin = new Role;
$admin->name = 'Admin';
$admin->save();
2.接下来,创建了两个角色让我们然后分配给用户。HasRole使用非常容易:
$user = User::where('username','=','Zizaco')->first();
/* role attach alias */
$user->attachRole( $admin ); // Parameter can be an Role object, array or id.
/* OR the eloquent's original: */
$user->roles()->attach( $admin->id ); // id only
错误解决办法:
问题1:Missing argument 2 for Illuminate\View\Engines\CompilerEngine::handleViewException(), called in E:\wamp\www\wholesale\apps\manage\compiled.php on line 9519 and defined
当操作多对的情况下,可以看看\vendor\zizaco\entrust\src\Entrust\HasRole.php 方面里面的第三个参数是的对了:
public function roles()
{ return $this->belongsToMany(Config::get('entrust::role'), Config::get('entrust::assigned_roles_table'), 'user_id', 'role_id');
}
laravel(4.2) +Zizaco的更多相关文章
- AdonisJs(Node框架)学习总结
先列出作为前端开发人员必须知道的10个NodeJs框架 AdonisJs 一个服务端渲染的MVC框架,它是 Laravel (PHP框架)的一个 NodeJS 版本. 可以安装脚手架工具adonis ...
- laravel(一):如何安装laravel
1.前提条件 本文针对想从零开始开发 Laravel 程序的初学者,不需要预先具备任何的 Laravel 使用经验.不过,为了能顺利阅读,还是需要事先安装好一些软件: PHP 5.4 及以上版本 包管 ...
- 通过laravel理解IoC(控制反转)容器和DI(依赖注入)
原文地址: http://www.insp.top/learn-laravel-container ,转载务必保留来源,谢谢了! 容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器 ...
- 学渣也要搞 laravel(2)—— HTTP路由[1]篇
前几天忙了,然后快两个星期没有发博客.今天正式回归.哈哈 1. 路由 说到路由当时学的时候给我疑惑了几天..没有仔细看文档.然后一脸蒙蔽的去用 postman[谷歌插件] 测试路由方法.然后就很奇怪 ...
- 学渣也要搞 laravel(1)—— 安装篇
看到laravel(我叫它:拉瓦)那么热门,我也决定学上一学. Laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持.隐式模型绑定.简化Eloquent 全 ...
- Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)
注意! laravel/homestead box项目地址已经不再是原来的 https://atlas.hashicorp.com/laravel/boxes/homestead 而已经变更成 htt ...
- laravel 查询构建器(连贯操作)
注:laravel 查询返回行的都是 php 的 stdClass 对象实例,不是数组!!!! 1)查询多行(get) DB::table('table_name')->get(); 带偏移和限 ...
- laravel基础课程---5、路由复习(路由作用)
laravel基础课程---5.路由复习(路由作用) 一.总结 一句话总结: 有利于百度收录,及SEO优化 1.路由书写 (D:\laravel\yzmedu\yzm2\routes\web.php) ...
- laravel composer 扩展包开发(超详细)
laravel composer 扩展包开发(超详细) 置顶 2018年02月05日 11:09:16 Simael__Aex 阅读数:10396 版权声明:转载请注明出处:http://blo ...
随机推荐
- PMD - Avoid autogenerated methods to access private fields and methods of inner / outer classes
PMD错误 Avoid autogenerated methods to access private fields and methods of inner / outer classes 样例 p ...
- Seek the Name, Seek the Fame POJ - 2752
Seek the Name, Seek the Fame POJ - 2752 http://972169909-qq-com.iteye.com/blog/1071548 (kmp的next的简单应 ...
- 162 Find Peak Element 寻找峰值
峰值元素是指其值大于左右相邻值的元素.给定一个输入数组,其中 num[i] ≠ num[i+1],找到峰值元素并返回其索引.数组可能包含多个峰值,在这种情况下,返回到任何一个峰值所在位置都可以.你可以 ...
- [在读]javascript框架设计
司徒正美的书,内容我觉得不错,国内的书很少会讲这些.当然也有很多人吐槽它只贴代码没有解释,文笔不够优美啥啥的,我想说,不要在意这些细节,反正是值得买的一本.
- windows 7 正确禁用 IPv6
与Windows XP和Windows Server 2003不同的是,Windows Vista和Windows Server 2008中的IPv6无法被卸载.然而,在Windows Vista和W ...
- P2955 [USACO09OCT]奇数偶数Even? Odd?
题目描述 Bessie's cruel second grade teacher has assigned a list of N (1 <= N <= 100) positive int ...
- oracle 权限、规则
Oracle中关于权限与规则简单总结: --1,管理员登录 conn sys/orcl@orcl as sysdba; --2,创建用户方案---必须管理员身份才能操作 create user use ...
- python2和python3的区别(转)
基本语法差异 核心类差异 Python3对Unicode字符的原生支持 Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持uni ...
- css 尺寸、边框、内边距、背景以及css Sprite
上节课回顾: HTML标签: 格式排版 p 段落 双br 换行 单hr 分隔线 单h1~h6 标题 双pre 原样格式化输出 双div 标签,无任何特殊意义 HTML标签 :文本 <em> ...
- 【转载】SQL Server 2012 日志传送
SQL Server 2012 日志传送 一.准备: 数据库为完全恢复模式,并事先做一次完全备份. 共享一个文件夹,主机备份放在这个文件夹,而且客户机有权访问这个共享文件夹. 二.基本配置 1.启动配 ...