【问题标题】:How to access to settings in routes in Slim PHP如何访问 Slim PHP 中的路由设置
【发布时间】:2017-01-24 04:09:35
【问题描述】:

我正在尝试访问 slim php 3.1 中的设置

src/settings.php

<?php
return [
    'settings' => [
        'displayErrorDetails' => true, // set to false in production
        'addContentLengthHeader' => false, // Allow the web server to send the content-length header

        // Renderer settings
        'renderer' => [
            'template_path' => __DIR__ . '/../templates/',
        ],

        // Monolog settings
        'logger' => [
            'name' => 'slim-app',
            'path' => __DIR__ . '/../logs/app.log',
            'level' => \Monolog\Logger::DEBUG,
        ],
    ],
];

documentation 说:

检索设置

由于设置存储在 DI 容器中,因此您可以访问它们 通过容器工厂中的设置键。例如:

$settings = $container->get('settings')['logger'];

您还可以通过 $this 在路由可调用对象中访问它们:

$app->get('/', function ($request, $response, $args) {

$loggerSettings = $this->get('settings')['logger'];
// ... 

});

public/index.php

require '../vendor/autoload.php';

$app = new \Slim\App;
$app->get('/profile/facebook/{id}', function (Request $request, Response $response)  use ($app){
    var_dump($this->get('settings')['logger']);
});

$app->run();

我得到 NULL 。

我做错了什么?

【问题讨论】:

  • 您似乎没有将设置传递给 Slim。当你实例化 Slim 时,第一个参数是设置数组。然后,您可以继续从路线访问设置。同样在 Slim 3 中,您不会将 use ($app) 添加到路由中。闭包自动绑定到容器。

标签: php slim


【解决方案1】:

您需要将设置传递到应用程序中:

require '../vendor/autoload.php';

use Slim\Http\Request;
use Slim\Http\Response;

$settings = include __DIR_ . '/../src/settings.php';
$app = new \Slim\App($settings);

$app->get('/profile/facebook/{id}', function (Request $request, Response $response) {
    var_dump($this->get('settings')['logger']);
});

$app->run();

【讨论】:

    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 2018-12-23
    • 2013-01-09
    • 2013-12-14
    • 2020-04-24
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多