2015-03-05 10 views
9

चूंकि मैंने पढ़ा है कि यदि Chrome कोड 206 नहीं है, तो क्रोम को एक HTML5 वीडियो लूप करने में परेशानी हो रही है, तो मैं अपना टेम्पलेट 206 कोड के साथ प्रस्तुत करना चाहता हूं।एक विशिष्ट स्थिति कोड के साथ एक टेम्पलेट प्रस्तुत करें

फिर भी मुझे टेम्पलेट को प्रस्तुत करते समय एचटीएमएल कोड निर्दिष्ट करने के लिए कहीं भी नहीं मिला है ... क्या किसी ने पहले से ही कोशिश की और सफल हुआ?

+0

क्यों कि अलग है मैं नहीं जानता, लेकिन उसमें समस्या ही हल जब मैंने अपना ऐप टेस्ट/प्रोड एनवी में रखा है। अचानक, वीडियो लूपिंग है जैसा इसे करना चाहिए। –

उत्तर

6

नियंत्रक आप बना सकते हैं और सामग्री और निर्दिष्ट वापसी कोड के साथ एक रिस्पांस वस्तु लौट सकते हैं, उदाहरण के रूप में:

return new Response(
    $this->renderView('AcmeDemoBundle:Default:video.html.twig', array(
      'param1' => $param1, 
      'param2'  => $param2, 
     )), 
     206 // return code 
); 

आशा इस मदद

+2

यह वास्तव में वाक्य रचनात्मक रूप से काम करता है। मैं देव टूल बार में देख सकता हूं कि प्रतिक्रिया स्थिति वास्तव में 206 है लेकिन मेरे पास अभी भी "HTTP/1.0 200 ओके कैश-कंट्रोल: नो-कैश दिनांक: गुरु, 05 मार्च 2015 18:45:02 GMT" बस जब मैं क्रोम के उपकरण के साथ स्रोत कोड का निरीक्षण करता हूं तो मेरे तत्व के तहत ... क्या इसमें कोई घटना है? –

+1

मैं इस हेडर को प्रतिक्रिया शरीर –

+0

पर प्रीपेड भी प्राप्त कर रहा हूं हाय @PierredeLESPINAY क्या आपने (एसएफ) प्रोड पर्यावरण में प्रयास किया है? प्रश्न पर लेखक टिप्पणी की जांच करें। मुझे बताएं – Matteo

1

मैं इस पर लगता है कि मैं आप आप कर रहे हैं इससे पहले कि टेम्पलेट को प्रस्तुत करना आपको वांछित परिणाम प्राप्त होगा:

$this->getContext()->getResponse()->setStatusCode(206);  

बीटीडब्ल्यू।
कक्षा Symfony\Component\HttpFoundation\Response सभी मान्य HTTP-states

6

के लिए स्थिरांक प्रदान करता है आप अपने रेंडर रेस्पॉन्स के साथ एक प्रतिक्रिया ऑब्जेक्ट पास कर सकते हैं जिसमें आवश्यक स्थिति कोड है।

$response = new Response('', 206); 

return $this->renderResponse(
// Or return $this->container->get('templating') 
    'AcmeBundle:Video:show.html.twig', 
    array('video' => video), 
    $response 
); 

आप अपने renderResponse के साथ एक Response में उत्तीर्ण नहीं होते हैं एक स्वचालित रूप से उत्पन्न हो जाएगा। आप किसी एक में उत्तीर्ण है तो यह सामग्री सिर्फ गाया टेम्पलेट के मान पर सेट किया जाता है (जैसा कि आप the code में देख सकते हैं)

+0

यह सही जवाब होना चाहिए। आप सीधे 'रेंडर' विधि का भी उपयोग कर सकते हैं: 'सार्वजनिक फ़ंक्शन प्रस्तुत करें ($ व्यू, सरणी $ पैरामीटर = सरणी(), प्रतिक्रिया $ प्रतिक्रिया = शून्य) '। तो कॉल होगा: '$ 1-> रेंडर करें (' AcmeBundle: Video: show.html.twig ', सरणी (' वीडियो '=> वीडियो), नया प्रतिसाद (' ', 206)); ' – StockBreak

1

नए सिरे से कार्यान्वयन

protected function renderError(array $parameters, $statusCode = 500) 
{ 
    return $this->render(
     'default/error.html.twig', 
     $parameters, 
     new Response('', $statusCode) 
    ); 
} 
संबंधित मुद्दे