La respuesta de BetaRide me puso en el camino correcto, pero eso no fue suficiente. Luego se quejaba: "No se puede generar una URL para la ruta especificada" "ya que dicha ruta no existe".
para crear una solicitud válida He modificado para solicitar la raíz del proyecto, así: (? Raíz asegurado)
$request = new Request();
$request->create('/');
$this->container->enterScope('request');
$this->container->set('request', $request, 'request');
puede que tenga que llamar a una ruta diferente, raíz trabajó para mí solo multa.
Symfony2 Docs
Bono además:
que tenía que hacer tanto de plantillas/enrutamiento de CLI a través de Symfony2 ordena que he actualizado el método initializeContainer()
en AppKernel. Se crea una ruta a la raíz del sitio, establece el contexto router y falsificaciones de un inicio de sesión de usuario:
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";
}
}
}
puede que no necesite la última $container->get('router')->getContext()->setBaseUrl($request->getRequestUri());
parte, pero tenía que hacerlo porque mi raíz del sitio estaba en dominio .com/siteroot/y el enrutador fue stripping/siteroot/away para la generación de url.
Esto no resuelve el problema. A medida que se utiliza el activo (probablemente no sea directamente visible en sus plantillas), debe tener un servicio RequestContext de alguna manera. – BetaRide
Recibo el mismo error pero esta solución no resuelve el problema.http: //stackoverflow.com/questions/17942738/erro-you-cannot-create-a-service-templating-helper-assets-of-an-inactive -sco – vishal
Esta solución funcionó para mí cuando la publiqué. No discutiré por un minuto que no funciona con las versiones más nuevas de Symfony de las que tenía en ese momento. Cuando se trata de salir del camino trillado, Symfony es un objetivo móvil. No he tenido tiempo para codificar por un tiempo, así que realmente no puedo investigar en este momento, pero puedes probar la solución de BetaRide. – Matthew