Seguendo la risposta di BetaRide mi ha messo sulla strada giusta ma non era sufficiente. Poi si è lamentato: "Impossibile generare un URL per la named route" "come tale percorso non esiste."
per creare una richiesta valida ho modificato per richiedere la radice del progetto in questo modo: (? Radice assicurata)
$request = new Request();
$request->create('/');
$this->container->enterScope('request');
$this->container->set('request', $request, 'request');
si potrebbe aver bisogno di chiamare un percorso diverso, radice ha lavorato per me solo bene.
Symfony2 Docs
Bonus Inoltre:
che ho dovuto fare così tanto di template/routing in CLI attraverso Symfony2 comandi che ho aggiornato il metodo initializeContainer()
in AppKernel. Si crea un percorso verso la radice del sito, imposta il contesto router e falsi un login utente:
protected function initializeContainer()
{
parent::initializeContainer();
if (PHP_SAPI == 'cli') {
$container = $this->getContainer();
/**
* Fake request to home page for cli router.
* Need to set router base url to request uri because when request object
* is created it perceives the "/portal" part as path info only, not base
* url and thus router will not include it in the generated url's.
*/
$request = Request::create($container->getParameter('domain'));
$container->enterScope('request');
$container->set('request', $request, 'request');
$context = new RequestContext();
$context->fromRequest($request);
$container->get('router')->setContext($context);
$container->get('router')->getContext()->setBaseUrl($request->getRequestUri());
/**
* Fake admin user login for cli. Try database read,
* gracefully print error message if failed and continue.
* Continue mainly for doctrine:fixture:load when db still empty.
*/
try {
$user = $container->get('fos_user.user_manager')->findUserByUsername('admin');
if ($user !== null) {
$token = $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->getContainer()->get('security.token_storage')->setToken($token);
}
} catch (\Exception $e) {
echo "Fake Admin user login failed.\n";
}
}
}
Potrebbe non essere necessario l'ultima $container->get('router')->getContext()->setBaseUrl($request->getRequestUri());
parte, ma ho dovuto farlo perché la mia principale del sito era a dominio .com/siteroot/e il router è stato stripping/siteroot/away per la generazione di URL.
fonte
2014-11-10 15:39:12
Questo non risolve il problema. Poiché viene utilizzato logn come asset (probabilmente non visibile direttamente nei modelli) è necessario avere un servizio RequestContext in qualche modo. – BetaRide
io sono sempre lo stesso errore, ma questa soluzione non risolve problem.http: //stackoverflow.com/questions/17942738/erro-you-cannot-create-a-service-templating-helper-assets-of-an-inactive -sco – vishal
Questa soluzione ha funzionato per me quando l'ho pubblicata. Non disputerò per un minuto che non funzioni con le versioni più recenti di Symfony di quanto non avessi in quel momento. Quando si tratta di uscire dai sentieri battuti, Symfony è un obiettivo in movimento. Non ho avuto tempo per il codice per un po ', quindi non posso davvero indagare al momento, ma potresti provare la soluzione di BetaRide. – Matthew