20

コンソールのキャッシュをクリアしようとすると、次のエラーが発生します。

 [Symfony\Component\DependencyInjection\Exception\InactiveScopeException]   
  You cannot create a service ("request") of an inactive scope ("request").

誰かがこれを以前に経験したことがありますか?ありがとう。

編集:コードのサンプル:

//accessing request object
namespace Greg\TestBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ContainerInterface;
use HvH\APIschemaBundle\Controller\Validation;
use HvH\APIschemaBundle\Controller\Helpers;

//FOSRestBundle
use FOS\RestBundle\View\View;

class TestController extends Controller
{
    public function testAction(Request $request) 
    {                       
        //get any query strings
        $query_strings = $request->query->all();
        return($query_strings);
    }
}

XML 探しているファイルがわからない...

4

5 に答える 5

44

たとえば、CLIでスコープ「request」を手動で作成するには、次のようにするだけで、 AppKernelクラスのinitializeContainerカーネルメソッドをオーバーロードできます。

class AppKernel extends Kernel {
    public function registerBundles() {
        // ...
    }

    public function registerContainerConfiguration(LoaderInterface $loader) {
        // ...
    }

    protected function initializeContainer() {
        parent::initializeContainer();
        if (PHP_SAPI == 'cli') {
            $this->getContainer()->enterScope('request');
            $this->getContainer()->set('request', new \Symfony\Component\HttpFoundation\Request(), 'request');
        }
    }
}
于 2013-03-03T04:08:54.633 に答える
3

コンストラクターで要求オブジェクトを削除することで、この問題を修正しました。CLI はヘッドレスであるため、手動で作成しない限り「リクエスト」オブジェクトはありません。

于 2012-07-17T22:09:26.283 に答える
0

これを実行してみてくださいrm -rf app/cache/*... この方法は Linux の削除方法です。

于 2012-07-10T14:21:22.850 に答える