Lumen/Laravel - 使用自定义路由器

德扬·米洛舍维奇

是否有任何开箱即用的解决方案,而无需更改核心以将自定义路由器添加到 Laravel 或 lumen。我已经知道 lumen 正在使用与 laravel 不同的路由器,所以我想知道是否有可能在核心中构建来更改路由器?

stixxx

我今天也有同样的问题。经过一些研究,我找到了一个对核心类影响最小的解决方案。

注:以下描述基于Lumen 6.2

在你开始之前; 考虑一个合适的解决方案,使用中间件

由于这个框架的性质,如果Router不扩展核心类和修改引导程序,就无法使用自定义

按照以下步骤进行自定义Router

黑客解决方案

1. 创建您的自定义Router.

提示:在这个例子App中将是 Lumen 项目的根命名空间。

<?php

namespace App\Routing;

class Router extends \Laravel\Lumen\Routing\Router
{
    public function __construct($app)
    {
        dd('This is my custom router!');
        parent::__construct($app);
    }
}

没有Interface或类似的,所以你必须扩展现有的Router. 在这种情况下,只需一个包含 的构造函数dd()来演示,如果Router要使用新的is。

2. 扩展 Application

常规Router将在没有任何绑定或依赖注入的情况下在Application::__construct. 因此,您不能覆盖它的类绑定。我们必须修改这个初始化过程。幸运的是,Lumen 使用了一种仅用于路由器初始化的方法。

<?php

namespace App;

use App\Routing\Router;

class Application extends \Laravel\Lumen\Application
{
    public function bootstrapRouter()
    {
        $this->router = new Router($this);
    }
}

3. 告诉 Lumen 使用我们的 Application

的实例Application在我们的bootstrap/app.php.

找到看起来像的代码块

$app = new Laravel\Lumen\Application(
    dirname(__DIR__)
);

并将其更改为

$app = new App\Application(
    dirname(__DIR__)
);

正确的解决方案

$router财产Application是公共财产。您可以简单地将自定义实例分配Router给它。

Application在你的bootstrap/app.php地方实例化之后

$app->router = new \App\Routing\Router;

完毕。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

流星铁路由器:自定义ID路由

来自分类Dev

具有自定义逻辑的网桥/路由器

来自分类Dev

Vue 路由器链接和自定义事件

来自分类Dev

流星:使用铁路由器和自定义身份验证问题

来自分类Dev

使用AngularJS ui路由器会破坏自定义引导主题的行为

来自分类Dev

配置ASUS路由器以在LAN上使用自定义Bind9和DHCPd

来自分类Dev

如何使用路由器和内置/自定义属性在aurelia中创建下拉菜单?

来自分类Dev

DRF 如何返回通过使用自定义路由器和模型视图集查找过滤的列表

来自分类Dev

AngularJS UI路由器解析不返回自定义值

来自分类Dev

在兄弟状态之间共享ui路由器“自定义数据”

来自分类Dev

AngularJS UI路由器解析不返回自定义值

来自分类Dev

如何将自定义路由器传递到Symfony捆绑包中的服务?

来自分类Dev

通过我的自定义路由器唤醒局域网

来自分类Dev

从自定义路由器(Raspberry Pi)唤醒局域网

来自分类Dev

定义路由器以默认使用SSL

来自分类Dev

AngularJS angular ui路由器-将自定义数据传递给控制器

来自分类Dev

处理ngrx路由器默认操作时如何访问自定义序列化程序

来自分类Dev

OpenWRT:TL-MR3020无法通过自定义OpenWRT箱通过SSH或TELNET闪入路由器

来自分类Dev

将自定义服务注入ui路由器配置会引发错误:未知提供程序:[服务]

来自分类Dev

如何在asp.net核心中将中间件编写为自定义路由器?

来自分类Dev

使用自定义路由将aspnetcore路由到控制器操作

来自分类Dev

使用简单的自定义路由

来自分类Dev

使用简单的自定义路由

来自分类Dev

使用htaccess php的自定义路由

来自分类Dev

使用铁路由器,“未定义路由器”

来自分类Dev

使用铁路由器,“未定义路由器”

来自分类Dev

如何使用RSpec在控制器中测试自定义路由

来自分类Dev

Laravel使用资源控制器的自定义动作名称和路由名称?

来自分类Dev

使用Ember在路由器中定义根路径

Related 相关文章

  1. 1

    流星铁路由器:自定义ID路由

  2. 2

    具有自定义逻辑的网桥/路由器

  3. 3

    Vue 路由器链接和自定义事件

  4. 4

    流星:使用铁路由器和自定义身份验证问题

  5. 5

    使用AngularJS ui路由器会破坏自定义引导主题的行为

  6. 6

    配置ASUS路由器以在LAN上使用自定义Bind9和DHCPd

  7. 7

    如何使用路由器和内置/自定义属性在aurelia中创建下拉菜单?

  8. 8

    DRF 如何返回通过使用自定义路由器和模型视图集查找过滤的列表

  9. 9

    AngularJS UI路由器解析不返回自定义值

  10. 10

    在兄弟状态之间共享ui路由器“自定义数据”

  11. 11

    AngularJS UI路由器解析不返回自定义值

  12. 12

    如何将自定义路由器传递到Symfony捆绑包中的服务?

  13. 13

    通过我的自定义路由器唤醒局域网

  14. 14

    从自定义路由器(Raspberry Pi)唤醒局域网

  15. 15

    定义路由器以默认使用SSL

  16. 16

    AngularJS angular ui路由器-将自定义数据传递给控制器

  17. 17

    处理ngrx路由器默认操作时如何访问自定义序列化程序

  18. 18

    OpenWRT:TL-MR3020无法通过自定义OpenWRT箱通过SSH或TELNET闪入路由器

  19. 19

    将自定义服务注入ui路由器配置会引发错误:未知提供程序:[服务]

  20. 20

    如何在asp.net核心中将中间件编写为自定义路由器?

  21. 21

    使用自定义路由将aspnetcore路由到控制器操作

  22. 22

    使用简单的自定义路由

  23. 23

    使用简单的自定义路由

  24. 24

    使用htaccess php的自定义路由

  25. 25

    使用铁路由器,“未定义路由器”

  26. 26

    使用铁路由器,“未定义路由器”

  27. 27

    如何使用RSpec在控制器中测试自定义路由

  28. 28

    Laravel使用资源控制器的自定义动作名称和路由名称?

  29. 29

    使用Ember在路由器中定义根路径

热门标签

归档