正在關注BetaRide的回答讓我走上了正軌,但那還不夠。然後它抱怨說:「無法爲指定的路由生成一個URL」,因爲這樣的路由不存在。「
要創建我已經修改了它要求項目的根像這樣一個有效的請求:(?確保根)
$request = new Request();
$request->create('/');
$this->container->enterScope('request');
$this->container->set('request', $request, 'request');
您可能需要調用不同的路線,根工作對我來說只是精細。
Symfony2 Docs
獎金此外:
我不得不通過Symfony2中做了這麼多的模板/路由中的CLI命令,我已經更新AppKernel的initializeContainer()
方法。它創建到網站根目錄的路徑,設置路由器環境和假貨用戶登錄:
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";
}
}
}
你可能並不需要最後$container->get('router')->getContext()->setBaseUrl($request->getRequestUri());
一部分,但我不得不這樣做,因爲我的網站根目錄是在域.com/siteroot /和路由器正在剝離/ siteroot /爲了生成網址。
這並不能解決問題。由於使用logn作爲資產(可能不能直接在您的模板中可見),它需要以某種方式提供RequestContext服務。 – BetaRide 2013-01-11 11:08:05
我得到同樣的錯誤,但此解決方案不能解決問題.http://stackoverflow.com/questions/17942738/erro-you-cannot-create-a-service-templating-helper-assets-of-an-inactive -sco – vishal 2013-07-30 09:22:32
當我發佈它時,此解決方案適用於我。我不會爭辯一下,它不適用於當時比較新版本的Symfony。談到擺脫困境時,Symfony是一個動人的目標。我暫時沒有時間編寫代碼,因此目前我無法調查,但是您可以嘗試使用BetaRide的解決方案。 – Matthew 2013-08-05 00:24:24