在Laravel

时间:2016-03-30 17:59:00

标签: php laravel package

我正在使用Laravel构建一个包含一些Admin功能的包,并将包含一些其他包。

我已经包含了一个包含迁移和配置文件的包,但是如何将它们复制到Laravel中的正确文件夹中。该软件包有自己的ServiceProvider,但如何从我的软件包中调用它?

我正在使用以下命令在我的包中注册包。

class CldServiceProvider extends ServiceProvider {

    public function register()
    {
       $this->app->register(MediaLibraryServiceProvider::class);
    }
}

我试过

php artisan vendor:publish 

但是它说没有什么可以发表的。因为它只查看此Laravel安装的软件包,而不是嵌套软件包。

6 个答案:

答案 0 :(得分:2)

尝试单独发布配置并使用强制开关

php artisan vendor:publish --tag=config --force

答案 1 :(得分:2)

正如@scrubmx所提到的,你需要包含定义可以发布内容的代码,尽管这段代码不应该在你自己的服务提供商中,而是你所包含的其他包。如果它似乎没有此代码,最好将其列为该软件包的存储库中的问题,或者创建一个拉取请求来添加它。

答案 2 :(得分:0)

我认为你自己发布了配置文件

$this->publishes([
    'other-package/absolute/path/some-config.php' => config_path('my-package.php'),
]);

答案 3 :(得分:0)

解决方案

我将/ packages /文件夹包含在我正在处理的当前项目中。 问题是在我的composer.json中包含包时

  

现在可以从我的项目中的2个位置,供应商文件夹和我的packages文件夹中访问它。这导致了问题

我将我的包移到了当前项目之外,这解决了这个问题。

答案 4 :(得分:0)

就我而言,我发现我需要在正在处理的应用程序中包括我的软件包。我遵循的原始教程中未包含此步骤。

在主应用程序的composer.json中:

"repositories": [
    {
        "type": "path",
        "url": "packages/namespace/name",
        "options": {
            "symlink": true
        }
    }
],
"require": {
    // ...
    "namespace/name": "dev-master"
},

然后从主文件夹运行此命令:

composer update

之后,运行php artisan vendor:publish将包括发布子软件包的选项。

注意:此信息的来源是:https://laraveldaily.com/how-to-create-a-laravel-5-package-in-10-easy-steps/

答案 5 :(得分:0)

发布供应商迁移:

php artisan vendor:publish --tag=migration

发布供应商配置:

php artisan vendor:publish --tag=config