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