Skip to content

Latest commit

 

History

History
49 lines (27 loc) · 1.86 KB

BundleOverride.md

File metadata and controls

49 lines (27 loc) · 1.86 KB

Bir bundle in belirli bir parcasini yeniden yazmak @Override

Burada sadece Template Override ve Controller Override Anlatilmistir. Diger Overridelar icin Google layin ;)


Bir Bundle indirdiniz veya olusturdunuz kullaniyorsunuz fakat uzerinde degisiklik yapmak istiyorsunuz. Eger bu degisikligi direk (indirdi iseniz) vendor altinda yaparsaniz, guncellemelerden sonra yaptiginiz degisiklik kaybolur fakat kendi proje dizininizin altinda gerekli klasor yapilarini bundle klasor yapisi ile ayni olacak sekilde ayarlar isek SF bize uzerinde override yapma imkani taniyor. Ornek olarak template uzerinde bir degisiklik yapilacak olsun.


Default Bundle Template ==> /vendor/symfony/bundle-name/Resources/views/index.html.twig olsun


Bu durumda ana dizinimizdeki /templates klasorunun altina /bundles adinda folder olusturuyoruz. Daha sonra default dizindeki klasor yapisini birebir kopyaliyoruz(bundle ismi ile birlikte) .


/templates/bundles/bundle-name/Resources/views/index.html.twig


Artik Bu dosyanin icine ne yazarsak bu bizim icin gecerli olacaktir. Controller icerisinde de degisiklik yapmaya gerek yok. $this->render(icerigi ayni kalacak) symfony template klasorunun icinde ayni klasor yapisi oldugundan bizim yazmis oldugumuzu alip kullanacak.


Eger Controller Override etmek istiyorsak da /config altinda anotations.yaml vardi hatirlarsaniz. Onun icerisine bizim Controller ust satirlarda kalacak sekilde gerekirse yer degisikligi yapilmalidir.

// annotations.yaml 
// Bu sekilde bizim ana /src/Controller ayarimiz ustte olacak sekilde yazabiliriz.


controller:
    resource: ../../src/Controller;
    type: annotation

test-bundle-controller:
    resource: ../../src/Test/TestBundle/Controller;
    type: annotation    

Diger kisimlardaki overridelar da gerekli dizin yapilari taklit edildikten sonra kullanilabilir.