【问题标题】:Laravel vendor:publish directory permission issuesLaravel vendor:发布目录权限问题
【发布时间】:2018-06-15 11:24:20
【问题描述】:

我正在构建一个需要在调用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 等,这对于某些视图是非常必要的。

我对@9​​87654329@ 缺少什么,我该如何让它发挥作用?

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    在您的包的服务提供者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'),
        ]);
    } 
    

    【讨论】:

    • 感谢您的贡献。我的包已经使用 $this->loadViewsFrom、$this->loadTranslationsFrom 和 $this->loadMigrationsFrom 作为默认选项。我希望让我的包用户完全访问修改视图、翻译、迁移等。我的包还需要将一些资产发布到“公共”目录,例如 js、css,这对于某些视图非常必要
    • 你在用$this->publishes吗?
    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 2018-01-06
    • 2021-08-31
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    相关资源
    最近更新 更多