BetaRide के उत्तर के बाद मुझे सही रास्ते पर रखा गया लेकिन यह पर्याप्त नहीं था। फिर यह शिकायत कर रहा था: "नामित मार्ग के लिए यूआरएल उत्पन्न करने में असमर्थ" क्योंकि इस तरह का मार्ग मौजूद नहीं है। "
एक वैध अनुरोध मैं बहुत तरह परियोजना की जड़ का अनुरोध करने के लिए इसे संशोधित कर लिया है बनाने के लिए: (? सुरक्षित जड़)
$request = new Request();
$request->create('/');
$this->container->enterScope('request');
$this->container->set('request', $request, 'request');
आप एक अलग मार्ग कॉल करने के लिए आवश्यकता हो सकती है, जड़ सिर्फ मेरे लिए काम किया ठीक।
Symfony2 Docs
बोनस अलावा:
मैं Symfony2 के माध्यम से CLI में इतना templating/मार्ग करना पड़ा आदेश है कि मैं 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/दूर था।
स्रोत
2014-11-10 15:39:12
यह समस्या का समाधान नहीं करता है। चूंकि संपत्ति के रूप में लॉग इन का उपयोग किया जाता है (संभवतः आपके टेम्पलेट्स में सीधे दिखाई नहीं देनी चाहिए) इसे किसी भी तरह से RequestContext सेवा की आवश्यकता है। – BetaRide
मुझे एक ही त्रुटि मिल रही है लेकिन यह समाधान समस्या का समाधान नहीं करता है। Http://stackoverflow.com/questions/17942738/erro-you-cannot-create-a-service-templating-helper-assets-of-an- निष्क्रिय -स्को – vishal
यह समाधान मेरे लिए काम करता था जब मैं इसे पोस्ट करता था। मैं एक मिनट के लिए विवाद नहीं करूंगा कि वह उस समय की तुलना में सिम्फनी के नए संस्करणों के साथ काम नहीं करता है। जब पीटा पथ बंद करने की बात आती है, तो सिम्फनी एक चलती लक्ष्य का थोड़ा सा हिस्सा है। मेरे पास थोड़ी देर के लिए कोड के लिए समय नहीं है इसलिए मैं वास्तव में इस समय जांच नहीं कर सकता, लेकिन आप बीटाराइड के समाधान का प्रयास कर सकते हैं। – Matthew