重组了silex1.2应用程序后,我受到以下攻击:
消息“已访问请求服务超出请求范围”的异常“ RuntimeException”。尝试将该调用移至前处理程序或控制器。” 在../vendor/silex/silex/src/Silex/Application.php:150中
我曾经以这种方式设置应用程序的配置:
$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']
那一点超出了范围。
我不明白错误消息,如:
基本上,我想尽早访问请求数据以获取一个值。为了实现相应的引导应用程序,我该如何实现?
您尝试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']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句