Anasayfa » Codeigniter, Php

CI + HMVC ile Modüller Arası Bağlantı Kurmak

25 Mayıs 2012 4.662 kez okundu 3 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (3 oy,5 üzerinden : 5,00 )
Loading...

Merhaba,

CI HMVC ile modüller arasında bağlantı kurmayı göstericem. İlk olarak controller’den başlamak istiyorum. Bildiğiniz gibi modüller arasında bağlantı kurabilirsiniz. Bu makalede sadece controller arasındaki bağlantıdan bahsedicem.

İlk olarak CI ve HMVC’nin kurulmuş olduğu çalışan bir uygulamada bütün ayarlarınızın çalışır vaziyette olduğunu varsayıyorum. (config.php autoload.php routes.php vs..)

Önce kendinize iki tane modül oluşturun. Modules klasörü altına 2 adet modül. Dosya yapısı aşağıdaki şekilde olacaktır.

 

modul1
modul1/controllers
modul1/controllers/modul1.php //Controller dosyanız

modul2
modul2/controllers
modul2/controllers/modul2.php //Controller dosyanız

Şimdi ‘modul2′ modülümüz kullanacağımız modül olarak düşünelim. Yani ‘modul1′ modülünden ‘modul2′ modülünü çağırıp sonuçları görücez. Bu yüzden ben kısa bi kontroller hazırladım görmeniz için. Alttaki kodları modul2.php controllerinin içine kopyalayın.

class Modul2 extends MX_Controller{
 
public function index(){
echo 'Modul 2';
}
 
public function method1($var){
return "Welcome, $var";
}
 
public function method2(){
echo "2. modul 2. method";
}
 
public function method3(){
return TRUE;
}
}

Şimdi artık modul2.php dosyamıza dokunmayacağız. Modul1.php dosyamızı açalım ve modul2 modülümüzden controlleri görelim. Aralarındaki bağlantıyı görelim. İlk önce PHP5 sürümünü kullanmanız gerektiğini söyleyeyim. Neyse. modul1.php dosyamızı açalım ve class’ı mızı tanımlayalım.

class Modul1 extends MX_Controller{
public function index(){
//class
}
}

Benim şimdi yazdığım class’ın index methoduna yazın bundan sonra vereceğim kodları. Yani size modul2 ile bağlantı kurmak için vereceğim komutları function index(){} bloğunun arasına yazmalısınız.

Burdan sonra soru cevap şeklinde gidelim. Daha anlaşılır olur.

Soru: Ben modul1′den modul2′yi nasıl çağırabilirim?
Yanıt:

echo modules::run('modul2');

Açıklama: Direk modulü çağırdık. Burada index methodunu çağıracaktır. Yani classımız ilk başladığında hangi methodu çağırıyorsa onu çağıracaktır. Bizim modül2 dosyamızda ne vardı? “echo Modul2″ yazdırıyorduk. Yani yukarıdaki kodla bu yazıyı yazdırmış oluruz.
Ekran Çıktısı:”Modul 2″

Soru: Ben modul2′den başka bir fonksiyona(method, function vs.) nasıl erişebilirim?
Yanıt:

echo modules::run('modul2/method2');

Açıklama: Modul2.php dosyamızda method1 fonksiyonunu çağırmış olduk.
Ekran çıktısı:”2. modul 2. method”

Soru: Ben modul2′den bir method’a parametre gönderebilir miyim? Nasıl?
Yanıt:

echo modules::run('modul2/method1', $parametre);

Açıklama: Modül çağırırken virgülden sonra parametrenizi tanımlayabilirsiniz. Benim yaptığım örneğe göre $parametre değişkeninin içinde “John” değeri olursa erken çıktısı aşağıdakşi gibi olur.
Ekran Çıktısı: Welcome, John

Soru: E benim modülümde iki controller var o zaman nasıl çağırıcaz controller dosyasını?
Yanıt:

echo modules::run('modul2/controller_dosyasi/method');

Açıklama bu şekilde uygun yerleri doldurduğunuz takdirde farklı controller dosyanızdaki method’a ulaşabileceksiniz.

Soru: Sadece görüntü mü alcaz kontrol yapamıyor muyuz?
Yanıt:

if( modules:run('modul2/method3') === TRUE ) echo 'method 3';

Açıklama: Method3 fonksiyonunda bize true değeri dönüyor. Bizde değeri kontrol ettirip method3 çıktısını verdik.
Ekran Çıktısı: method 3

Soru: Aynı modül altındaki model dosyasını nasıl çağırabiliriz?
Yanıt:

$this->load->model("model_adi");

Soru: Farklı modül altındaki model dosyasini nasıl çağırıcaz?
Yanit:

$this->load->model("modul_adi/model_adi");

Soru: view dosyalarını nasıl çağırıcaz?
Yanıt: Model ile aynı şekilde çağırabilirsiniz.

alıntıdır

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

3 yorum »

  • Şirazi dedi ki:

    Anlatım süper olmuş, Tebrik ve teşekkür ediyorum. Bu yöntemi çok beğendim. Mesela bazen yazdığımız bazı contoller method`larına tekrar ihtiyac duyarız. Bu yöntem tam buna göre. Şimdi başlamış olduğum projeni tekrar başlasaydım, kesinlikle modül yöntemiyle başlardım.

    Şimdi sizden yarıdan da olsa projemi modül sistemiyle devam etdire bilmem için öneri vermenizi rica ediyorum. Önceden Saygılar, Sevgiler.

  • admin dedi ki:

    Merhaba Şirazi, şu anda senin çalıştığın projeye hakim olmadığım için herhangi bir öneri veremiyorum. Eğer daha spesifik sorun olursa yardımcı olmaya çalışırım.

  • recep dedi ki:

    Öncelikle yararlı olduğu için teşekkür ediyorum..
    iki adet template yada daha fazla templateyi hmvc nasıl uygularız. ana dizinde klasör açıp css ve js dısyalırın atıp modül view içinde çalıştırmak tamam. Ama farklı birden fazla temlatede bu yöntemi nasıl yapacağız.

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.