Не удается решить неопределенный индекс: outputBuffering в /vendor/slim/slim/Slim/App.php в строке 252 ошибка

Я следую руководству по Destructy, и после настройки и тестирования подключения к базе данных я получаю следующую ошибку:

Пока это мои настройки:

return [
    'settings' => [
        'displayErrorDetails' => true,
    ],
    'url'   =>  'http://localhost',
    'db'    =>  [
        'mysql' =>  [
            'host'      =>  'localhost',
            'dbname'    =>  'destructy',
            'username'  =>  'username',
            'password'  =>  'password',
            'charset'   =>  'utf8',
            'collation' =>  'utf8_unicode_ci',
            'prefix'    =>  '',
        ]
    ],
];

Вот как определяется контейнер:

/*Set Slim up*/

$container = new \Slim\Container();//Ver si le afecta o no los paréntesis ()

$container['settings'] = function($c){
  return $c['config']->get('settings');
};

$container['config'] = function($c){ //c= current state of our container
    return new \Noodlehaus\Config('../config/app.php');//We could pass more parameters ... as an array ['param1','param2','etc']
};
$container['view'] = function($c){//c= current state of our container
    $view = new Slim\Views\Twig('../resources/views');//Ubicación de las vistas

    //Ability to generate URLs to routes from within our views
    $view->addExtension(new \Slim\Views\TwigExtension(
        $c['router'],
        $c['config']->get('url')
    ));

    return $view;
};
//base de datos:
$container['db'] = function($c){
    //return new PDO('mysql:host=127.0.0.1;dbname=destructy','root','root');
    return new PDO(
        'mysql:host='.$c['config']->get('db.mysql.host').';dbname='.$c['config']->get('db.mysql.dbname'),
        $c['config']->get('db.mysql.username'),
        $c['config']->get('db.mysql.password'));
};

$app = new Slim\App($container);

require_once 'routes.php';

Маршрут:

$app->get('/',function($request,$response,$args){
    echo 'Destructy - Home.';
    echo '<p style="color: darkblue">Welcome to the admin area</p>';
    echo '<p>Testing access to config parameters ...</p>';
    echo $this->config->get('db.mysql.host').'<br>';
    echo $this->config->get('url');

    /*Testing out DB connection*/
    var_dump($this->db);

    $this->view->render($response,'home.twig');
});

$app->run();

Кто-нибудь знает, в чем проблема, чтобы исправить это?


person Pathros    schedule 28.02.2016    source источник


Ответы (1)


Вы не можете использовать точечный синтаксис для доступа к значениям конфигурации, должно быть что-то вроде:

$container['db'] = function($c){
    $conf = $c->db;
    return new PDO(
        'mysql:host='.$conf['mysql']['host'].';dbname='.$conf['mysql']['dbname'],
        $conf['mysql']['username'],
        $conf['mysql']['password'];
};
person the-noob    schedule 29.02.2016
comment
Я надеюсь, что SilentWorks выпустит обновленное руководство по за интеграцию пакета Laravel Config в Slim 3. - person alexw; 29.03.2016