【问题标题】:Slim 3 + Pleague 2.4 - Alias (router) is not being managed by the container?Slim 3 + Pleague 2.4 - 别名(路由器)不是由容器管理?
【发布时间】:2018-02-18 04:50:38
【问题描述】:

如何将Pleaguev2.4 与Slim v3.8.1 一起使用?

按照这个example,我试过了:

// PSR 7 standard.
use Slim\Http\Request;
use Slim\Http\Response;

// Import classes.
use Slim\App as Slim;

use League\Container\Container;
$container = new Container;

// Required to enable auto wiring.
$container->delegate(
    new \League\Container\ReflectionContainer
);

// Get an instance of Slim.
$app = new Slim($container);

我明白了:

致命错误:未捕获 League\Container\Exception\NotFoundException: 别名(路由器)未由容器管理 /var/www/html/projectA/vendor/league/container/src/Container.php:266 堆栈跟踪:#0 /var/www/html/projectA/vendor/league/container/src/Container.php(93): League\Container\Container->getFromDelegate('router', Array) #1 /var/www/html/projectA/vendor/slim/slim/Slim/App.php(239): League\Container\Container->get('router') #2 /var/www/html/projectA/vendor/slim/slim/Slim/App.php(143): Slim\App->map(Array, '/', Object(Closure)) #3 /var/www/html/projectA/public/index.php(53): Slim\App->get('/', Object(Closure)) #4 {main} 抛出 /var/www/html/projectA/vendor/league/container/src/Container.php on 第 266 行

有什么想法吗?

【问题讨论】:

    标签: ioc-container slim-3 thephpleague


    【解决方案1】:

    Slim 正在尝试访问您添加的容器上未定义的 router。在 Slim 中,它们将由 \Slim\DefaultServicesProvider 添加。 但是你不能使用它,因为你的 DI Container 不支持数组访问。

    解决此问题的一个选项是将 Slim 容器设置为委托,然后 League\Container\Container 将通过 slim 容器获取路由器和所有其他内容:

    $container = new \League\Container\Container;
    $container->delegate(new \Slim\Container());
    $app = new \Slim\App($container);
    

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 2012-12-21
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 2014-12-15
      相关资源
      最近更新 更多