Маршрут нестандартного пакета Laravel 5.2 не найден

Я создал пользовательский пакет, следуя документации. ( https://laravel.com/docs/5.2/packages)

Я добавил маршрут в файл пользовательских маршрутов, он появляется при проверке с помощью "php artisan route:list", но я получаю NotFoundHttpException.

Я использовал "php artisan route:clear", чтобы очистить кэш маршрутов, но проблема остается.

Если я добавлю маршрут в основное приложение, то файлы маршрутов будут работать нормально.

Поставщик услуг:

/**
 * Bootstrap the application services.
 *
 * @return void
 */
public function boot()
{
    $this->publishes([
        __DIR__ . '/../database/migrations/' => database_path('migrations')
    ], 'migrations');

    if (! $this->app->routesAreCached()) {
        require __DIR__.'/../Http/routes.php';
    }
}

Файл пользовательских маршрутов:

Route::get('foo', function () {
    return 'Hello World';
});

3 ответа

Для информации, которую вы даете здесь, я не могу просто дать четкий ответ.

Если ваша структура пакета такая

PackageMainDir
  - src
    - Controllers
    - Migrations
    - Models
    PackageServiceProvider.php
    Routes.php
  - test
  - vendor
  composer.json
  phpunit.xml

В вашем PackageServiceProvider.php у вас будет следующий код:

/**
 * Bootstrap the application services.
 *
 * @return void
 */
public function boot()
{
    $this->publishes([
        realpath(__DIR__.'/Migrations') => $this->getDatabasePath().'/migrations',
    ]);

    if (! $this->app->routesAreCached()) {
        require_once(__DIR__ . '/Routes.php');
    }
}

Я надеюсь, что это не поздно, и в противном случае другой пользователь получит выгоду от моего ответа.

Я тоже такой же опыт для этого после некоторых исследований и решил это! пожалуйста, измените ваш код в файле поставщика услуг пакета function boot(),

public function boot()
    {

        if (! $this->app->routesAreCached()) {
            require __DIR__ . '/Routes.php';
        }
    }

После этого запустите php artisan config:cache Код в CMD я решил эту проблему.

У меня была такая же проблема, я решил так

public function boot()
{
    $path = realpath(__DIR__.'/../');

    $this->loadRoutesFrom($path.'/Routes/web.php');
    $this->loadViewsFrom($path.'/Resources/views/Formato','formato');
}

public function register()
{

}

Я надеюсь это может быть полезно

Решил, не знаю почему но после попытки php artisan config:cache, изменения в config/app.php были рассмотрены, и пользовательский сервис-провайдер загрузил метод boot().

Другие вопросы по тегам