CodeIgniter - "blok" oluşturmak için doğru yolu

3 Cevap php

I've been searching for a solutions for this problem a while but haven't seen any "valid mvc" solution for this. I hope I can explain my problem clearly enough for you guys.

  • Web siteme HTML bir dynamic blok oluşturmak gerekir. (Örn. kullanıcının son blog yorumlarınızı içeren bir blok).

  • Ben bazı içerik ve bu blok öğe eklemek için gereken bir şablon görünüm dosyası (bir dosya içeren bir başlık, içerik konteyner ve bir altbilgi) var.

Sorun her denetleyicisi bu blok kod çoğaltmak istemiyorum olmasıdır. Bu sadece aptalca hissediyor ve ben sadece tüm kontrolör tüm dosyalar üzerinde tekrar tekrar aynı şeyleri çoğaltarak daha bunu yapmak için daha iyi bir yolu vardır eminim?

I can add view inside another view just fine, but what bugs me is how to actually generate that dynamic content to this block's view-file. I can't call controller from view file, controller from controller filem or model from view file because what I understand that just isn't the "mvc" way?

Herkes bunun için herhangi bir hile ya da ipucu var mı?

3 Cevap

Ben aynı sorun koştu. Ben eylem yöntemleri genelinde bu ortak mantığı çoğaltmak istemedim. Ben ana kontrolöre kadar bu mantığı hareket ediyordu ama biraz aksak hissettim.

Sonunda CodeIgniter için HMVC uzantısı tökezledi. Kısmi manzarasına üreten Onun gerçekten güzel bir yol. Sen kısmi üreten sorumlu bir modül oluşturun. Modülü sayfalarınızı kod, tıpkı senin gibi bir MVC şekilde kodlanmıştır. Bu modül sonra görünümünde dahil edilebilir.

Eğer daha önce kullanarak onun benzer ASP.NET MVC kullanılan ettiyseniz Html.RenderAction.

Zack de işaret ettiği gibi, MY_Controller küresel veri oluşturmak için mükemmeldir.

Bunu tek yolu ihtiyacı olan her şeyi içeren bir görünümü vardır "kısmi" manzarası, yaratmaktır. Bazen bu PHP biraz ama bu özel görünümler için ben onları kirli yapma umursamıyorum.

Başka bir yol manzaralı bir yardımcı işlevi çift etmektir. : Tüm PHP ardından yardımcı fonksiyonu (RSS, önbelleğe alma, vb almak için cURL istek) koyun

$this->load->view('partials/rss_feed');

En iyi yolu, Widgets system from PyroCMS uygulamaktır. O şey harika! : D

Eğer bu verileri çekecek birden denetleyici varsa, bir modeli kullanmak, ya da MY_Controller ile Kontrol sınıfını genişletmek olabilir ya. Bu CodeIgniter kullanım kılavuzunda iyi belgelenmiştir.

If it is just for many methods in the same controller, you can put the logic in the Controllers constructor

Yeniden-okuma sonrası sonra, yapmanız için en iyi şey MY_Controller documented here. ile CodeIgniter'ın Controller sınıfından uzatmak için olduğunu düşünüyorum