3

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

4

2 回答 2

5

很简单。将默认的 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
}

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

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

通过这种方式,您可以将 Voyager 用户模型的强大功能引入您自己,而无需涉及任何黑客行为。

于 2017-08-31T14:10:54.010 回答
0

在大多数情况下,扩展供应商包都可以正常工作。

更新航海者配置

config/voyager.php

像这样更改用户数组。我只namespace在此处进行了更改,来自 voyager 用户 tp App\User。

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

但要带来额外的变化,您可以尝试以下方式。

将整个 voyager 包加载为本地包。

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

要做到这一点

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

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对包进行更改后执行此操作。

于 2017-01-20T00:33:23.207 回答