更改航海者模型

Change voyager model

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

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

更新航海者配置

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 包加载为本地包。

Warning: After doing this the package would no longer be a vendor package.

这样做

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

2 - 将 tcg/voyager 存储库克隆到 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

很简单。修改默认的Laravel用户模型为

<?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 用户模型的强大功能带入您自己的模型中,而无需涉及黑客技术。