在重构我的silex1.2应用程序之后,我现在受到了:
异常'RuntimeException',消息'访问请求服务 请求范围之外。尝试将该调用移至before handler或 控制器“。在 ../供应商/硅石/硅石/ SRC /捷希凯/ Application.php:150
我曾经这样设置appilcation的配置:
$app = new Silex\Application();
$app->register(new ServiceControllerServiceProvider());
$app->register(new ConfigServiceProvider($configFile));
$fileFinder = new \Symfony\Component\Finder\Finder();
foreach ($fileFinder->in($configPath . 'country') as $file) {
/* @var SplFileInfo $file */
$app->register(new ConfigServiceProvider($file->getRealPath()));
}
我现在想要通过注入我从用户请求获得的特定值来替换foreach
循环。所以我想访问$request->query->get('country')
;但是我不能因为那时app['request']
超出了范围。
我不明白错误信息,如:
基本上,我想尽早访问请求数据以获取一个值。如何实现相应的引导应用程序?
答案 0 :(得分:4)
在Request
之前,您尝试在$app->run()
初始化之前使用Request
您可以手动初始化$app = new \Silex\Application();
$app['request'] = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
.....
$app->run($app['request']);
:
$app['object1'] = $app->share(function ($app) {
return new Object1($app['request']->query->get('country'));
});
...
或在服务提供商中进行延迟加载:
$app['object1']
和控制器中的某个地方将这些变量设为return{
setUser : function(nome, cognome, tipo){
user.nome=nome;
user.cognome=cognome;
user.tipo=tipo;
},
isLoggedIn : function(){
if(user.nome!==undefined){
return false;
}else{
return true;
}
},
utente : function(){
return user;
}
};