2017-02-27 6 views
0

Ich möchte die Einstellungswerte der Anwendung dynamisch aktualisieren, nachdem die Route bestimmt wurde. Bei den meisten Routen habe ich beispielsweise eine Zeitüberschreitung von 600 Sekunden eingestellt. Dies wurde in der Einstellungsdatei fest codiert.Schlank - Einstellungen dynamisch ändern

Aber in einigen speziellen Routen muss ich das Timeout auf einen anderen Wert basierend auf der Eingabe ändern. z.B.

$app->get('/route1', function ($request, $response, $args) { 
    $timeout = (some calculations from $args) 
    $container['settings']['timeout'] = $timeout; 
}); 

Aber ich diesen Fehler bekam bei dem Timeout-Wert auf den Behälter setzen:

Notice: Indirect modification of overloaded element of Slim\Collection has no effect 

Also, was ist der richtige Weg, um die Einstellungen dynamisch zu aktualisieren?

Antwort

1

Obwohl $container['settings'] aussieht wie ein Array-Zugriff, ist es eigentlich ein Aufruf an eine Schließung, die dann ein Array zurückgibt, weshalb Sie diese Nachricht erhalten. Die Lösung besteht darin, das Array abzurufen und dann zu ändern:

$settings = $container['settings'] 
$setting['timeout'] = $timeout; 
+1

Das funktioniert. Vielen Dank! – LazNiko