我正在尝试使用以下命令运行一个Silex子请求
$subRequest = Request::create('/api/movie/show?id=61333');
$res = $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);当我在Controller中运行这两行时,它非常好,但是当我试图在命令行中运行它时,在初始化路由和应用程序之后,我得到以下PHP错误:
PHP Fatal error: Uncaught exception 'RuntimeException' with message
'Accessed request service outside of request scope. Try moving that call to a before handler or controller.'
in /my/project/vendor/silex/silex/src/Silex/Application.php:132我怀疑命令行上下文中有错误/未初始化的东西,但我不知道它是什么。知道吗?
有关信息,我的命令行脚本如下
<?php
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
// service providers init ...
$app->register(new Provider\UrlGeneratorServiceProvider());
$app->register(new Provider\ServiceControllerServiceProvider());
// ... more service providers init
// routes definition
require_once __DIR__.'/../src/routes.php';
// run sub query
$subRequest = Request::create('/api/movie/show?id=61333');
$res = $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);预先感谢(再次,最后两行在Controller中工作得很好)
编辑:通过@smwhr解析:我需要用HttpKernelInterface::SUB_REQUEST替换HttpKernelInterface::SUB_REQUEST
发布于 2014-01-23 15:45:52
您正在尝试处理一个SUBrequest,而不是首先有任何请求。
试试这个:
$res = $app->handle($subRequest, HttpKernelInterface::MASTER_REQUEST, false);如果您在脚本和控制器中使用相同的代码,只需测试$app的“请求”是否存在,以知道选择哪一个
https://stackoverflow.com/questions/21311715
复制相似问题