uzzal/legacy-router

Laravel框架5.2+的旧版路由器

v1.0.3 2018-02-16 18:35 UTC

This package is auto-updated.

Last update: 2024-09-22 03:34:23 UTC


README

Laravel路由器已弃用一些功能,例如Route::controllerRoute::controllers。如果你的代码看起来像下面的代码,那么它们可能不再被Laravel的最新版本支持。更准确地说,这些功能自Laravel 5.2以来已被弃用。

这个库恢复了那些旧版路由功能。

Route::controllers([
    'user'  => 'UserController',        
    'asset/report' => 'Asset\AssetReportController',
    'asset' => 'Asset\AssetController'        
]);

或者

Route::controller('/user', 'UserController');

安装

composer require uzzal/legacy-router

配置

在你的laravel app/Http/Kernel.php中添加/编辑你的构造函数,如下面的代码所示

<?php
namespace App\Http;
...
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
use Uzzal\LegacyRouter\LegacyRouter;
...
class Kernel extends HttpKernel
{

    ...
    
    public function __construct(Application $app)
    {
        $router = new LegacyRouter($app['events'], $app);
        $app->singleton('router', function($app) use ($router){
            return $router;
        });
        parent::__construct($app, $router);
    }

    ...
}

在你的laravel app/Console/Kernel.php中添加/编辑你的构造函数,如下面的代码所示,确保你导入了

<?php
namespace App\Console;
...
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Uzzal\LegacyRouter\LegacyRouter;
use Illuminate\Contracts\Foundation\Application;
...
class Kernel extends ConsoleKernel
{
    ...    
    public function __construct(Application $app)
    {
        $router = new LegacyRouter($app['events'], $app);
        $app->singleton('router', function($app) use ($router){
            return $router;
        });
        parent::__construct($app, $app['events']);
    }
    ...    
}

就这样。你完成了!

这是什么(wit)

如果你是那些不知道这个路由器是如何工作的少数人之一,这部分是为你准备的。想象一下,在你的app/Http/Controllers目录中有一个控制器,如下所示

class TestController extends Controller
{

    public function getIndex(){
        return 'this is a get request';
    }

    public function postStore(){
        return 'this is a post request';
    }
}

然后你可以使用旧版路由器这样调用它

Route::controller('/test', 'TestController');

这会自动与你的控制器进行映射。有关更多信息,请查看这个链接 隐式控制器