2017-09-09 1 views
1

Pleague v2.4를 Slim v3.8.1과 함께 사용하려면 어떻게해야합니까?Slim 3 + Pleague 2.4 - 별칭 (라우터)이 컨테이너에 의해 관리되고 있지 않습니까?

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

내가 얻을 :

Fatal error: Uncaught League\Container\Exception\NotFoundException: Alias (router) is not being managed by the container in /var/www/html/projectA/vendor/league/container/src/Container.php:266 Stack trace: #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} thrown in /var/www/html/projectA/vendor/league/container/src/Container.php on line 266

어떤 아이디어?

답변

1

Slim이 추가 한 컨테이너에 정의되지 않은 router에 액세스하려고합니다. Slim에서는 \Slim\DefaultServicesProvider으로 추가됩니다. DI 컨테이너가 배열 액세스를 지원하지 않기 때문에 사용할 수 없습니다.

이 문제를 해결 할 수있는 옵션은 대리인으로 슬림 컨테이너를 설정하는 것입니다, 다음 League\Container\Container 슬림 한 용기를 통해 라우터 및 기타 모든 물건을 얻을 것이다 : 도움을

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

감사합니다! – laukok

관련 문제