2017-02-27 84 views
0

我想在路线确定后动态更新应用程序的设置值。例如,在大多数路由中,我将超时设置为600秒。这已在设置文件中进行了硬编码。Slim - 动态更改设置

return [ 
'settings' => [ 
    'timeout' => 600, 
....] 
]; 

但是在某些特殊路由中,我需要根据输入将超时更改为另一个值。例如

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

但超时值设置为容器,当我得到这个错误:

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

那么什么是动态更新设置的正确方法?

回答

1

虽然$container['settings']看起来像一个数组访问,它实际上是一个闭合的是随后返回数组这就是为什么你得到该通知的电话。解决方案是检索数组,然后对其进行修改:

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

This works。谢谢! – LazNiko