使用 Zizaco/entrust 包的 `name` 字段的自定义名称

Posted

技术标签:

【中文标题】使用 Zizaco/entrust 包的 `name` 字段的自定义名称【英文标题】:Using custom name of `name` field of Zizaco/entrust Package 【发布时间】:2015-07-13 09:21:51 【问题描述】:

我在一个拥有大型 postgreSQL 数据库的项目中工作。之前的项目是用 Java 从头开始​​开发的。我们现在正在 Laravel 中开发它。以前的系统具有类似于Zizaco/entrustuser management 系统。所以,我们也在我们的系统中使用。前一个表有module 表而不是entrust 中使用的permission 表。我们已经通过更改config/entrust.php 中的表名来配置它。但是,以前的系统有permission_name,而不是entrust 中使用的name 字段。如何将 entrust 配置为使用唯一的 permission_name 而不是 name 字段。

我正在寻找解决方案,这样我们就不必更改sourcesentrust,因为那样升级它会破坏系统。可以在模型中配置吗?

【问题讨论】:

【参考方案1】:

Entrust 包被硬编码为使用name 属性,因此没有配置值或任何可以改变它的东西。但是,您可以尝试的一件事是为 name 属性定义访问器和修改器。

在您的 App\Permission 模型中,定义以下函数:

class Permission extends Model 
    // accessor
    public function getNameAttribute($value) 
        return $this->permission_name;
    

    // mutator
    public function setNameAttribute($value) 
        $this->attributes['permission_name'] = $value;
    

访问器和修改器的文档:http://laravel.com/docs/5.0/eloquent#accessors-and-mutators

【讨论】:

以上是关于使用 Zizaco/entrust 包的 `name` 字段的自定义名称的主要内容,如果未能解决你的问题,请参考以下文章

[HOOLOO] zizaco/entrust 5.2.x-dev Class name must be a valid object or a string

laravel(4.2) +Zizaco

Entrust是一种为Laravel5添加基于角色的权限的简洁而灵活的方法。

如何修复 laravel 5.2 zizaco 委托:迁移类名验证?

Entrust - Laravel 用户权限系统解决方案 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub

使用composer安装laravel包而不更新依赖项[重复]