PHP MVC görünümü loop

3 Cevap php

Ben bir "blog önizleme" için bir şablon var - temelde sadece bir küçük resim, başlık ve kısa bir alıntıdır listede tekrarı için inşa edilmiş bir güzel özlü yapıda günlüğü dedi.

Yukarıda vurguladığımız gibi, benim modeli DB benim sitede ilk 10 bloglar çekin görünüm için bunları tedarik edecek denetleyicisi, bunları aktarmak niyetinde. Görünümünde, ben sonuçları döngü gerekir ve her blog için yeni bir "blog önizleme" doldurmak.

Benim geçerli çözüm (ben MVC kurallarını kırabilir düşünüyorum) görünümü şablonda bu yapmaktır:

foreach($this->blogs as $blog) {
    $tpl = new Output_Html();
    $tpl->title = $blog['title'];
    // ...assign other vars

    $tpl->render();
}

Her nasılsa bu görünüm yapmak için izin verilmemesi gereken bir şey gibi hissediyor? Ama, nasıl başka ana sayfa şablonu içinde "önizleme" şablonları döngü mümkün olacaktır?

Yardım?

3 Cevap

Görünüm göz önüne çıktı üretimi için sorumlu, ne yapıyorsun burada Tamam görünüyor: Eğer herhangi bir "böyle hesaplama / iş şey / bir şey" yapmıyor senin Görünümü.

Ben tek sorun burada bir sürü kod yazma olmasıdır; Ben oldukça Görünümü bir bütün için $blog dizi / nesne geçmek ister ve onunla Görünüm anlaşma izin istiyorum - yerine View $blog her bir özelliğini atama.


i.e. something like this seems (just an idea -- up to you to see how this can fit with your View class) more pretty :

foreach($this->blogs as $blog) {
    $tpl = new Output_Html();
    $tpl->blog = $blog;
    $tpl->render();
}

Bu blog nesne hiç değiştirirse, sadece (to add or remove stuff) düzenlemek için bir görünümü var ve eklemek / birini kaldırmak görünümü her çağrı değiştirmek zorunda değilsiniz anlamına gelir bileşeni / mülk $blog.

Kontrolörün reponsibility girişi işlemek için ve belirli bir duruma Model ayarlamaktır. Sizin görünümün reponsibility Model kılmaktır. Yani, bunu yapmak için tamam derim. Bu Kısmi Görünüm oluşturma veya bir ViewHelper kullanmak gibi. Dinamik iş veri Görüntüle Yardımcısı kapsülü sunum mantığı.

Ben Pascal katılıyorum. Bunun yerine denetleyici o işlemi gerçekleştirme, sadece Görünümüne geçmek ve orada maddeleri gerisini. Daha sonra Görünüm için her şeyi hazırlamak, girdilerde Kontrolör almak, modeller yoluyla önişlem edelim. Bu şekilde, hala kod sürdürülebilirliğini sağlamak.