更改航海家模型

时间:2017-01-19 22:46:51

标签: laravel voyager

我想在Voyager的User类中添加一些mutator,但我不会更改vendor文件夹中的任何内容,而Voyages在包中使用User模型。我有可能以某种方式改变这种情况吗?

2 个答案:

答案 0 :(得分:3)

足够简单。将默认的Laravel User模型修改为

<?php

namespace App\Models;

use TCG\Voyager\Models\User as VoyagerUser;

class User extends VoyagerUser {
    // add custom mutators and other code in here
}

然后你可以像{aimme所说的那样更新app/config/voyager.php并将其作为

'user' => [
    'add_default_role_on_register' => true,
    'default_role'                 => 'user',
    'admin_permission'             => 'browse_admin',
    'namespace'                    => App\User::class,
],

通过这种方式,您可以将Voyager用户模型的强大功能引入您自己的模式,而不会涉及任何问题。

答案 1 :(得分:0)

对于大多数扩展供应商包的情况,工作正常。

更新voyager配置

请参阅config/voyager.php

像这样更改用户数组。我在voyager用户tp App \ User中仅更改了namespace

'user' => [
    'add_default_role_on_register' => true,
    'default_role'                 => 'user',
    'admin_permission'             => 'browse_admin',
    'namespace'                    => App\User::class,
],

但要进行其他更改,您可以尝试以下方式。

将整个voyager程序包作为本地程序包加载。

  

警告:执行此操作后,包将不再是供应商   包。

要做到这一点

1 - 在项目的根目录下创建一个packages文件夹。

2 - 将tcg / voyager repo克隆到packages文件夹中或将vendor tcg文件夹粘贴到您创建的packages文件夹中。所以你将拥有像这样yourproject/packages/tcg/voyager的目录。如果你在composer.json中需要tcg / voyager,请从那里删除它。

3 - 更新项目根目录下的composer.json文件。添加TCG\\Voyager自动加载。见下面的样本,在psr-4中添加了一行。

"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/",
            "TCG\\Voyager\\": "packages/tcg/voyager/src/"
        }
    },

4 - 运行作曲家更新

有时您可能需要在对包进行更改后执行composer dump-autoload