未找到Laravel 5.2自定义包路由

时间:2016-03-13 13:35:53

标签: php model-view-controller laravel-routing laravel-5.2

我在文档后面创建了一个自定义包。 (https://laravel.com/docs/5.2/packages#routing

我在自定义路线文件中添加了一个路线,在使用" php artisan route:list"但我得到NotFoundHttpException。

我使用" php artisan route:clear"清除路由缓存但问题仍然存在。

如果我在主app中添加路由,路由文件就可以正常工作。

服务提供商:

/**
 * 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';
});

4 个答案:

答案 0 :(得分:0)

对于你在这里提供的信息,我不能只给出一个明确的答案。

如果你的包结构是这样的

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');
    }
}

我希望它不会迟到,否则其他用户将获得我的答案的利润。

答案 1 :(得分:0)

解决了,我不知道为什么但是在尝试php artisan config:cache之后,考虑了config / app.php中的更改,并且自定义服务提供程序加载了boot()方法。

答案 2 :(得分:0)

经过研究并解决后,我也有同样的经验!请在打包服务提供商文件function boot()中编辑您的代码。

public function boot()
    {

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

运行完cmd中的php artisan config:cache代码后,我解决了这个问题。

答案 3 :(得分:0)

我遇到了同样的问题,我用这种方式解决了

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

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

public function register()
{

}

我希望这会有用