2012-02-29 15 views
16

मैं वर्तमान में एक न्यूज़लेटर टूल लिख रहा हूं, और इसलिए सीएलआई स्क्रिप्ट में पूर्ण यूआरएल उत्पन्न करना है जिसे क्रॉन के माध्यम से बुलाया जाता है।सिम्फनी 2: सीएलआई स्क्रिप्ट्स में होस्ट/बेस यूआरएल कैसे सेट करें

दुर्भाग्यवश सिम्फनी सीएलआई कमांड को मेरे होस्ट/base_url के बारे में कुछ भी पता नहीं है, इसलिए राउटर गलत URL_url के साथ पूर्ण URL उत्पन्न करता है। यह हमेशा आधार के रूप में http://localhost का उपयोग करता है।

राउटर को सही base_url बताने का कोई तरीका है?

मेरे कोड:

$host = $this->getContainer()->getParameter('host'); 
$this->getContainer()->get('router')->getContext()->setHost($host); 

इसी तरह आप baseurl और योजना निर्धारित कर सकते हैं:

$this->getContainer()->get('router')->getContext()->setScheme('https'); 
$this->getContainer()->get('router')->getContext()->setBaseUrl('/web'); 

उत्तर

26

आप इस तरह से यह कर सकते हैं 2.1 आप राउटर के डिफ़ॉल्ट पैरामीटर को कॉन्फ़िगर कर सकते हैं, जो शायद सबसे अच्छा तरीका है। एक CLI स्क्रिप्ट इन डिफ़ॉल्ट पैरामीटर का उपयोग होगा लेकिन एक वेब अनुरोध उन्हें को पार कर जाएगी,:,

# app/config/parameters.yml 
parameters: 
    router.request_context.host: example.org 
    router.request_context.scheme: https 
    router.request_context.base_url: my/path 

अधिक जानकारी के लिए की तरह यह होना चाहिए How to Generate URLs and Send Emails from the Console

+0

काम करता है देखते हैं। धन्यवाद :) – stoefln

+0

मुझे इस कार्यक्षमता की भी आवश्यकता है और जैसा कि मैंने कई साइटों में संभवतः एक बंडल बनाया है: http://packagist.org/packages/frosas/base-url-bundle –

+3

आप इसे वैश्विक रूप से कॉन्फ़िगर कर सकते हैं '' 'पैरामीटर.एमएल''' में। इसे केवल गैर-वेब अनुरोधों के लिए लिया जाएगा, इसलिए इससे आपके "वास्तविक" मार्गों को प्रभावित करने की चिंता करने की आवश्यकता नहीं है। संदर्भ: [वैश्विक स्तर पर अनुरोध संदर्भ कॉन्फ़िगर करना] (http://symfony.com/doc/2.3/cookbook/console/sending_emails.html#configuring-the-request-context-globally)। – flu

1

$host = $this->container->getParameter('host'); $this->container->get('router')->getContext()->setHost($host);

13

के बाद से

$this->container->get('router')->generate($route, $parameters, true); 
+1

यह मेरे लिए सिम्फनी 3 में काम नहीं कर रहा है। क्या आपको पता चलेगा कि एसएफ 3 में काम करना है या नहीं? – conradkdotcom

+0

वास्तव में यह काम SF3 में है लेकिन यह ऐप/कॉन्फ़िगर/पैरामीटर.आईएमएल नहीं है लेकिन ऐप/config/services.yml – LedZelkin