Joomla! 1.5 ile basit bir bileşen hazırlamak – 3
11th Şubat 2010 · 0 Comments
Joomla! 1.5 ile yaptığımız basit bileşenimizi geliştirmeye devam edelim. Bu yazımda bileşenimize bir model ekleyeceğiz. Yaptığımız ilk bileşen Joomla! nın MVC (model-view-controller) yapısına uymuyordu, çünkü sadece controller ve view kısımlarından oluşmuştu. Şimdi ise bileşenimize model kısmını da ekleyerek MVC yapısına uygun hale getireceğiz.
Joomla! çekirdek çerçevesi içerisinde modeller için isim tanımlası yaparken sınıf ismi, bileşenin ismi ile başlar, daha sonra model ve ondan sonra da sınıfın ismi gelir. Bizim bu bileşen örneğimizde model ismi bu durumda “MerhabaModelMerhaba” şeklinde olacaktır. Modelimizin tek bir hareket seçeneği var o da karşılama mesajını getirmek. Bu metodumuza karsilamaGetir() diyeceğiz. Bu metodumuz bize cevap olarak “Cümleten Merhaba” yazısını getirecek. Oluşturacağımız dosya site/models/merhaba.php olacaktır.
merhaba.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php // Direkt erişimi engelleyelim defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.model' ); /** * Merhaba Modelimiz */ class MerhabaModelMerhaba extends JModel { /** * Karşılamayı alalım */ function karsilamaGetir() { return 'Cümleten Merhaba'; } } |
Koddaki jimport fonksiyonunu geçmiş yazılarımda bahsetmiştim. jimport fonksiyonu ile JModel sınıfını alıyoruz.
Şimdi bileşenimize model eklediğimize göre view yapısında bazı değişiklikler yapmamız gerekiyor. Joomla! çerçeve yapısının bir özelliği olarak aynı isimdeki model ile view sınıfları controller tarafından otomatik olarak birleştirilir. Yani model içerisindeki veriler otomatik olarak view kısmına gönderilir. Bunu sağlayan da JView::getModel() metodumuzdur. Eğer model ve view sınıfları farklıysa bu durumda farklı yollara başvurmamız gerekiyor. Bu konuyu daha sonra anlatacağım.
İlk yaptığımız bileşenimizdeki view.html.php dosyamızda şöyle bir satır vardı;
1 | $karsilama = "Cümleten Merhaba!"; |
Bu satırı şöyle değiştiriyoruz;
1 2 | $model = &$this->getModel(); $karsilama= $model->karsilamaGetir(); |
Sonuçta view.html.php dosyamız şöyle oluyor;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php // Direkt erişimi engelleyelim defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view'); /** * Merhaba bileşenimiz için HTML View sınıfı */ class MerhabaViewMerhaba extends JView { function display($tpl = null) { $model = &$this->getModel(); $karsilama = $model->karsilamaGetir(); $this->assignRef( 'karsilama', $karsilama ); parent::display($tpl); } } |
merhaba.xml dosyamızı yeni eklediğimiz models/merhaba.php dosyasını da ekleyerek güncelliyoruz.
merhaba.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | < ?xml version="1.0" encoding="utf-8"?> <install type="component" version="1.5.0"> <name>Merhaba</name> <!-- Aşağıdaki elementler isteğe bağlıdır. Bileşen hakkında bilgi verirler. --> <creationdate>2010-02-10</creationdate> <author>Soner Ekici</author> <authoremail>pisdoktor@orneksite.com</authoremail> <authorurl>http://www.orneksite.com</authorurl> <copyright>Copyright Bilgisi</copyright> <license>Lisans Bilgisi</license> <!-- Sürüm bilgisi veritabanındaki components tablosuna kaydedilecektir --> <version>1.1</version> <!-- Açıklama isteğe bağlıdır --> <description>Bileşenin açıklaması...</description> <!-- Site Ana Dosya Kopyalama Bölümü --> <!-- folder etiketi hakkında: Bu etiket bileşenimizin paket dosyası içerisinde neredeki dosyaların sitemizin ön yüzüne aktarılacağını tanımlar. Bizim bileşen örneğimizde paketimizdeki /site/ klasöründen aktarılacak --> <files folder="site"> <filename>controller.php</filename> <filename>merhaba.php</filename> <filename>index.html</filename> <filename>views/index.html</filename> <filename>views/merhaba/index.html</filename> <filename>views/merhaba/view.html.php</filename> <filename>views/merhaba/tmpl/default.php</filename> <filename>views/merhaba/tmpl/index.html</filename> <filename>models/merhaba.php</filename> <filename>models/index.html</filename> </files> <administration> <!-- Yönetim Menüsü Bölümü --> <menu>Merhaba!</menu> <!-- Yönetim Ana Dosya Kopyalama Bölümü --> <files folder="admin"> <filename>merhaba.php</filename> <filename>index.html</filename> </files> </administration> </install> |
Artık elimizde Joomla! MVC yapısına uygun basit bir bileşenimiz var. Bileşeni paket halinde indirmek için buraya tıklayın.
Tags: bileşen, DS, get, getModel, import, jimport, JModel, Joomla!, Joomla! 1.5, JView, load, model, models, php, UTF-8, views, _JEXEC
Readers Comments (0)
Comments are closed.