2017-01-19 39 views
1

我想在Voyager的用戶類中添加一些增變器,但我不會更改供應商文件夾內的任何內容,而且Voyages在包內使用用戶模型。不知何故,我可以改變這種情況嗎?更改航海家模型

+0

切勿觸碰'vendor',因爲一旦觸摸'Composer'等,您的更改將不會被反映。另外'vendor'應該總是'.gitignore',所以你不能將你的工作保存到repo中。 – slick

+0

更新了我的回答 – aimme

回答

1

夠簡單。修改默認的Laravel用戶模型

<?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, 
], 

這樣你帶來航海的用戶模型的力量,你自己有沒有涉及黑客。

+0

這也適用於角色,權限等... – WhyAyala

+0

我還沒有擴展角色和權限,但我不明白爲什麼它不起作用。我擴展了'VoyagerBreadController'來獲得一些自定義功能。您可能希望在即將到來的v1中爲Voyager BREAD [策略](https://laravel.com/docs/5.5/authorization#creating-policies)提供一個外觀。0版本,然後再擴展Voyager的角色和權限,因爲它們可能會幫助您達到相同的效果。 – Theson

+0

有趣。有什麼消息可以讓我指出v1.0的發佈日期嗎? – WhyAyala

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文件夾或將paste 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