Php 尝试发布Laravel包时找不到可发布的资源
我的目录设置如下所示:Php 尝试发布Laravel包时找不到可发布的资源,php,laravel,package,composer-php,Php,Laravel,Package,Composer Php,我的目录设置如下所示: |- packages |-|-- Iezon |---|-- Core |-- Admin |-- src |--|-- database |-----|-- migrations |--------|-- xxxx_xx_xx_xxxxxx_create_admin_panels.php |--|-- Http |----|-- routes.php
|- packages
|-|-- Iezon
|---|-- Core
|-- Admin
|-- src
|--|-- database
|-----|-- migrations
|--------|-- xxxx_xx_xx_xxxxxx_create_admin_panels.php
|--|-- Http
|----|-- routes.php
|--|-- Providers
|-----|-- AdminServiceProvider.php
|--|-- Resources
|-----|-- views
namespace Iezon\Core\Admin\Providers;
use Illuminate\Support\ServiceProvider;
class AdminServiceProvider extends ServiceProvider
{
public function boot()
{
$this->loadRoutesFrom(__DIR__ . '/../Http/routes.php');
$this->loadViewsFrom (__DIR__ . '/../Resources/views', 'admin');
}
public function register()
{
$this->publishes([__DIR__ . '/../database/migrations', database_path('migrations')]);
}
protected function loadRoutesFrom(string $path)
{
require_once $path;
}
}
"autoload": {
"psr-4": {
...
"Iezon\\Core\\Admin\\": "packages/Iezon/Core/Admin/src",
...
}
}
我的AdminServiceProvider.php
如下所示:
|- packages
|-|-- Iezon
|---|-- Core
|-- Admin
|-- src
|--|-- database
|-----|-- migrations
|--------|-- xxxx_xx_xx_xxxxxx_create_admin_panels.php
|--|-- Http
|----|-- routes.php
|--|-- Providers
|-----|-- AdminServiceProvider.php
|--|-- Resources
|-----|-- views
namespace Iezon\Core\Admin\Providers;
use Illuminate\Support\ServiceProvider;
class AdminServiceProvider extends ServiceProvider
{
public function boot()
{
$this->loadRoutesFrom(__DIR__ . '/../Http/routes.php');
$this->loadViewsFrom (__DIR__ . '/../Resources/views', 'admin');
}
public function register()
{
$this->publishes([__DIR__ . '/../database/migrations', database_path('migrations')]);
}
protected function loadRoutesFrom(string $path)
{
require_once $path;
}
}
"autoload": {
"psr-4": {
...
"Iezon\\Core\\Admin\\": "packages/Iezon/Core/Admin/src",
...
}
}
我的composer.json
如下所示:
|- packages
|-|-- Iezon
|---|-- Core
|-- Admin
|-- src
|--|-- database
|-----|-- migrations
|--------|-- xxxx_xx_xx_xxxxxx_create_admin_panels.php
|--|-- Http
|----|-- routes.php
|--|-- Providers
|-----|-- AdminServiceProvider.php
|--|-- Resources
|-----|-- views
namespace Iezon\Core\Admin\Providers;
use Illuminate\Support\ServiceProvider;
class AdminServiceProvider extends ServiceProvider
{
public function boot()
{
$this->loadRoutesFrom(__DIR__ . '/../Http/routes.php');
$this->loadViewsFrom (__DIR__ . '/../Resources/views', 'admin');
}
public function register()
{
$this->publishes([__DIR__ . '/../database/migrations', database_path('migrations')]);
}
protected function loadRoutesFrom(string $path)
{
require_once $path;
}
}
"autoload": {
"psr-4": {
...
"Iezon\\Core\\Admin\\": "packages/Iezon/Core/Admin/src",
...
}
}
当我运行composer dumpautoload
并尝试运行时:
php artisan vendor:publish --provider="Iezon\Core\Admin\Providers\AdminServiceProvider"
我明白了:
找不到可发布的资源
然后,我使用php artisan vendor:publish
检查它是否存在,但它不显示在提供者列表中。我缺少什么?$this->publishes(…)
实际上属于boot
方法中,而不是寄存器中。此外,您需要传递一个关联数组,但需要传递两个单独的值。最后,当提供程序实际在控制台中运行时,最好只调用publishes
,如下所示:
|- packages
|-|-- Iezon
|---|-- Core
|-- Admin
|-- src
|--|-- database
|-----|-- migrations
|--------|-- xxxx_xx_xx_xxxxxx_create_admin_panels.php
|--|-- Http
|----|-- routes.php
|--|-- Providers
|-----|-- AdminServiceProvider.php
|--|-- Resources
|-----|-- views
namespace Iezon\Core\Admin\Providers;
use Illuminate\Support\ServiceProvider;
class AdminServiceProvider extends ServiceProvider
{
public function boot()
{
$this->loadRoutesFrom(__DIR__ . '/../Http/routes.php');
$this->loadViewsFrom (__DIR__ . '/../Resources/views', 'admin');
}
public function register()
{
$this->publishes([__DIR__ . '/../database/migrations', database_path('migrations')]);
}
protected function loadRoutesFrom(string $path)
{
require_once $path;
}
}
"autoload": {
"psr-4": {
...
"Iezon\\Core\\Admin\\": "packages/Iezon/Core/Admin/src",
...
}
}
if($this->app->runningincole()){
$this->发布([\uuuu DIR\uuuu.'/../database/migrations'=>database\u path('migrations'));
}