Re: Konfigürasyon dosyalarını manipule etmek

59 views
Skip to first unread message

Osman Üngür

unread,
Mar 9, 2015, 10:49:15 AM3/9/15
to symfon...@googlegroups.com
Merhaba,

Symfony2 dependency injection yapisi bahsettiginiz gibi calismaz. Dependency injection vasitasiyla compile edilen servisler immutable oldugundan calisma aninda degistirilemez. Cunku servisler production modunda bir defa cache klasorune yazilir ve her istek degismeyen cache dosyalari uzerinden yanitlanir. 

* Eger “her deploy / proje kopyasi” icin bir parametre belirleyip her deployment’in farkli parametre almasini istiyorsaniz parameters.yml ye yazip oradan %parametre% adiyla almaniz gerekir. 

* Eger calisma aninda servisleri ve konfigurasyon parametrelerini manipule etmek isterseniz bundle’iniz icerisinde yer alan DependencyInjection klasorunde yer alan uygun sinif icerisinde isleminizi yapmaniz gereklidir. Yalniz unutmayin ki servisler immutable’dir. Yani servisler sadece ilk istek te compile olur

Kolay gelsin
O.


On 09 Mar 2015, at 16:40, Muharrem ERİN <erin.m...@gmail.com> wrote:

Merhabalar, config.yml, routes.yml, parameters.yml gibi dosyaları yazdığım servis içerisinde veya controller içerisinde kontrol edebilmek istiyorum.
Çoğu frameworkler şu şekilde bir kod işimizi görüyor:
Config::set('foo', 'bar');
Bu değer konfigürasyon dosyasında olmadığı halde, çalışma anında oluşturuluyor. Symfony'de bunun basit bir yolu var mı?

Mesela;

# routes.yml
mews_engine:
    resource: "@MewsEngineBundle/Resources/config/routing.yml"
    prefix:   /%prefix%/



Ben buradaki prefix parametresini herhangi bir dosyada(parameters.yml) statik şekilde belirtmeden oluşturabilmeliyim.
Bunu oluşturduğum servis içerisinde denedim ama başarılı olamadım. Kodlarım şu şekilde:

<?php
namespace Mews\EngineBundle;

use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\EventDispatcher\Event;

class Service
{
    protected $container;

    public function __construct(Container $container)
    {
        $this->container = $container;

        $builder = new ContainerBuilder();
        $builder->setParameter('back_prefix', 'panel');
        $this->container->get('router')->getContext()->setParameter('back_prefix', 'panel');

        $this->addThemePath();
    }





--

---
Bu iletiyi Google Grupları'ndaki "Symfony 2 Turkish Users" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için symfony-2-tr...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.

Muharrem ERİN

unread,
Mar 9, 2015, 10:58:40 AM3/9/15
to symfon...@googlegroups.com
Verdiğiniz bilgiler için teşekkür ediyorum.

9 Mart 2015 Pazartesi 16:49:15 UTC+2 tarihinde Osman Üngür yazdı:
Reply all
Reply to author
Forward
0 new messages