2012-02-29 13 views
16

Şu anda bir bülten aracı yazıyorum ve bu nedenle cron ile çağrılan bir CLI komut dosyasında mutlak URL'ler oluşturmak zorundayım.Symfony2: ana bilgisayar/alt url'yi CLI komut dosyalarında ayarlama

Ne yazık ki Symfony CLI komutu, host/base_url hakkında hiçbir şey bilmiyor, böylece yönlendirici, yanlış bir base_url ile mutlak URL'ler üretiyor. Her zaman http://localhost tabanını kullanır.

Yönlendiriciye doğru base_url söyleme yolu var mı?

Kodum: yana

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

cevap

26

Bu şekilde her yapabiliriz 2.1 En iyi yaklaşım olan yönlendiricinin varsayılan parametrelerini yapılandırabilirsiniz. Daha fazla ayrıntı için

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

olması gerektiği gibi How to Generate URLs and Send Emails from the Console

+0

eserlerini bakın: Bir CLI komut ancak bir web isteği onları geçersiz kılar, bu varsayılan parametreleri kullanacaktır. teşekkürler :) – stoefln

+0

Ayrıca bu işlevselliğe ihtiyaç duydum ve bir paket oluşturduğum birçok yerde ihtiyaç duyduğumdan: http://packagist.org/packages/frosas/base-url-bundle –

+3

Bunu global olarak yapılandırabilirsiniz '' 'parameters.yml''' içinde. Sadece web dışı talepler için alınacak, dolayısıyla "gerçek" rotalarınızdan endişelenmenize gerek kalmayacaktır. Referans: [Talep Bağlamını global olarak yapılandırma] (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

:

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

Benzer şekilde BaseURL ve düzenini ayarlayabilirsiniz:

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

Bu Symfony 3'te benim için çalışmıyor gibi görünüyor. SF3'te çalışmasının gerekip gerekmediğini öğrenmek ister misiniz? – conradkdotcom

+0

Aslında bu SF3'te çalışıyor ancak uygulama/config/parameters.yml değil, app/config/services.yml değil. – LedZelkin

İlgili konular