2012-03-17 13 views
9

यह stackoverflow solution लगभग मेरे प्रश्न का उत्तर देता है। लेकिन मैं सिर्फ संसाधनों की तुलना में Twig में सीडीएन यूआरएल उत्पन्न करना चाहता हूं। मैं उन्हें गतिशील सामग्री के लिए उत्पन्न करना चाहता हूं। तो मुझे नहीं लगता कि एक एसेटिक ट्वीक दिखने का सही क्षेत्र है।सिम्फनी 2/ट्विग: सीडीएन के साथ उपयोग के लिए वैकल्पिक पूर्ण यूआरएल पथ उत्पन्न करें?

अभी के लिए, मैं parameters.ini में सीडीएन_यूआरएल सेट कर सकता हूं और अपने यूआरएल में इसका उपयोग कर सकता हूं। मेरा कोड इस तरह दिखेगा: {{CDN_Url}}{{url('route',{'param1':'value'}} .. कोड रखरखाव एक प्रमुख कारण है जो मुझे यह विकल्प पसंद नहीं है। फिर आप सीडीएन यूआरएल और डोमेन पर आधारित अन्य सभी चीजों को उत्पन्न करने के लिए /cdn/ के लिए मार्ग की जांच करने जैसी चीजें कर सकते हैं। मुझे बहुत सारे चर बदलने के लिए दौड़ना नहीं होगा। और अगर मैं सीडीएन यूआरएल उत्पन्न करने से रोकना चाहता था। मैं बस मार्ग को संशोधित कर सकता था। इसलिए इसका पता लगाने के लिए बहुत सारे फायदे हैं कि इसका कोई साफ समाधान है या नहीं।

यदि, पहले से कोई समाधान नहीं है - मैं {{ url() }} कार्यक्षमता को कैसे बढ़ा सकता हूं ताकि मैं इसे path और url जैसे उपयोग कर सकूं।

+0

आप बहु डोमेन symfony2 पर बनाया गया साइट है या जो गतिशील यूआरएल जो सिम्फोनी मार्गों से परिभाषित किया गया है CDN पर सामग्री है? –

+0

सीडीएन काम करने का तरीका बहु-डोमेन होने जैसा है। cdn.domain.com/route mirrors my.domain.com/route .. पुल उत्पत्ति का उपयोग कर। इसलिए कभी-कभी, मीडिया के साथ, my.domain और अन्य बार लोड करने के अच्छे कारण हैं, cdn.domain को लोड करना समझ में आता है। – JustinP

उत्तर

24

आप सवाल आप निम्नलिखित तरीके से जुड़े हुए की मदद से यह कर सकते हैं

{{ asset(path('route',{'param1':'value'})) }} 

आप निम्नलिखित तरीके

द्वारा कई CDN डोमेन आप यह कर सकते संभाल करने app/config.yml

में की जरूरत है
# app/config.yml 
#.... 
templating:  
    engines: ['twig'] 
    packages: 
    cdn1: 
     base_urls: ["http://cdn1.domain.com"] 
    cdn2: 
     base_urls: ["http://cdn2.domain.com"] 

और फिर अपने टहनी टेम्पलेट फ़ाइल में

{{ asset('path/of/file', 'cdn1') 

या

{{ asset('path/of/file', 'cdn2') 
+0

यह बॉक्स के ठीक बाहर काम करता है। @ सीराड का समाधान आपको थोड़ा क्लीनर फ़ंक्शन बनाने के लिए शुरू करने के लिए बहुत अच्छा है। – JustinP

+0

सिम्फनी 3.0 में, 'पैकेज' को ढांचे के तहत घोंसला जाना चाहिए: '->' संपत्तियां: '। – Jonathan

6

मैं CDN सामग्री के बारे में पता नहीं है लेकिन जहां तक ​​यूआरएल समारोह का विस्तार के रूप में, पर एक नज़र डालें:

Symfony \ ब्रिज \ टहनी \ एक्सटेंशन \ RoutingExtension

public function __construct(UrlGeneratorInterface $generator) 
{ 
    $this->generator = $generator; 
} 
public function getFunctions() 
{ 
    return array(
     'url' => new \Twig_Function_Method($this, 'getUrl'), 
     'path' => new \Twig_Function_Method($this, 'getPath'), 
    ); 
} 
public function getPath($name, $parameters = array()) 
{ 
    return $this->generator->generate($name, $parameters, false); 
} 

public function getUrl($name, $parameters = array()) 
{ 
    return $this->generator->generate($name, $parameters, true); 
} 

तो तुम कर सकते थे वहाँ getUrl पर मिलता है या आप अपने UrlGenerator डाल सकते हैं। सुनिश्चित नहीं है कि आपके विशिष्ट मामले में कौन सा आसान होगा। शायद अपना खुद का UrlGenerator बनाते हैं।