Laravel供应商:发布目录权限问题

时间:2017-11-26 08:49:13

标签: php laravel laravel-5

我正在构建一个在调用php artisan vendor:publish时需要发布到这些目录的包。

目录包括

public_path('vendor/package/assets')
resources_path('vendor/package/views')
resources_path('vendor/package/translations')

当我运行试图写入这些目录的vendor:publsih时,我收到与权限相关的错误。

vendor:publish适用于database_path('migrations')

Laravel需要storagebootstrap/cache的许可775。

我不希望包用户被迫向公共和资源目录提供写入权限。

注意:我的软件包已经使用$ this-> loadViewsFrom,$ this-> loadTranslationsFrom和$ this-> loadMigrationsFrom作为默认选项。我希望为我的包用户提供修改视图,翻译,迁移等的完全访问权限。我的包还需要将一些资产发布到public目录,例如js,css等,这对于某些视图来说非常必要。

我对artisan vendor:publish缺少什么,以及如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

在您的软件包的服务提供商boot方法中,您应该依赖loadViewsFromloadTranslationsFrom方法来正确包含视图和翻译文件:

public function boot()
{
    $this->loadViewsFrom(__DIR__.'/path/to/views', 'courier');
    $this->loadTranslationsFrom(__DIR__.'/path/to/translations', 'courier');
}

有关包含观看次数的更多信息,请访问here和翻译here

如果您要发布文件而不是仅加载它们以供使用,请使用publishes方法:

public function boot()
{
    $this->publishes([
        __DIR__.'/path/to/assets' => public_path('vendor/courier'),
    ]);
} 
相关问题