Symfony : Bundle icin kolay yapilandirma yapmak

Ana ayar dosyalarini acarsaniz ( config/packages ) bir cok farkli dosya goreceksiniz. ( framework.yaml, twig.yaml vb. ) Her bir ayar dosyasi spesifik olarak birer bundle demektir. Buradaki ayarlar genel kapsamli ayarlar olup bundle kendi ayarlarini alt seviyede yapar.

Ornegin FramworkBundle form entegrasyon ozelligini acmak icin;

framework:
form: true

Twitter entegrasyonu icin bir bundle yazdigimizi dusunelim. Kullanici adi icin soyle bir ornek verebiliriz;

# config/packages/acme_social.yaml
acme_social:
twitter:
client_id: 123
client_secret: your_secret

Temel fikir bundle kullanicisinin temel ayarlari yapabilmesini saglamaktir. Bundle gelistiricisi bu ayarlari gerekli yerlerde kullanir.

AcmeSocialBundle icin ana anahtar acme_social otomatik olarak Symfony tarafindan bulunur. Snake case seklinde yazilmasi yeterlidir.

Bir bundle bir extension classa sahipse bu durumda service container icindeki bir parametreyi gecersiz kilmamalisiniz. Burada onemli olan extension’in ihtiyac duyacagi ayarlarin yapilabilir olmasidir.

Detaylar : https://symfony.com/doc/current/configuration/using_parameters_in_dic.html

Dogru sekilde bir extension olusturdugunuzu varsayalim.

( https://symfony.com/doc/current/bundles/extension.html adresinde anlatildigi gibi )

Bir bundle kullanicisi config dosyasina acme_social gibi bir anahtar eklediginde symfony otomatik olarak extension load() methoduna bu ayarlari gonderir.

load () yönteminize iletilen dizi şu şekilde görünecektir:

Birden fazla config dosyasinda bu ayarlar sira ile birlestirilip gelir.

[
// values from config/packages/acme_social.yaml
[
'twitter' => [
'client_id' => 123,
'client_secret' => 'your_secret',
],
],
// values from config/packages/dev/acme_social.yaml
[
'twitter' => [
'client_id' => 456,
],
],
]

Siralama hangi dosyanin once ayarlara dahil olduguna baglidir.

Symfony bu ayarlar yanlis yapildiginda kullaniciya hata gonderileri yapabilir. Nasil calistigina dair ornek;

Bu class artık ayarlari birleştirmek ve doğrulamayı zorlamak için load () yönteminizde kullanılabilir (örneğin, ek bir seçenek geçilirse, bir exception atılır):

processConfiguration() methodu tanimlanan config tree yapisinin aynisi config gonderilmesi icin zorlayici olacaktir.

Simdi bundle icin bir servis ayar dosyasi oldugunu varsayalim.

Servis icinde default servis ayarlarini kullanicinin ayarlari ile degistirmek icin;

Bunu her serviste processConfiguration() ile yukleyerek yapmak yerine soyle bundle genelini kapsayacak sekilde yapabilirsiniz.

Bu class configrasyon instance nesnesi icin getConfigration methodunu cagirir.

Coklu bundle yapilandirmasi https://symfony.com/doc/current/bundles/prepend_extension.html

yazilim ve yatirim ile ugrasiyorum

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store