MVC parçacıkları ve görüşlerini Taşıma

3 Cevap php

i 4 veya 5 parçacıkları (haber, olay besleme vb beslemeleri), (farklı model ve db tabloları) farklı veri ile ilgili tüm göstermek zorunda nerede benim sitede bir sayfa varsa, o nesil işlemek için bir mantıklı yolu nedir pasajı içeriği ve düzeni? i her ilgili verileri ile doldurulan bir görünüm dönmek statik işlevleri içeren tek bir pasajı denetleyici kullanabilirsiniz. Ama bu pasajı denetleyicisi her fonksiyonu farklı veri / modelleri ile etkileşim olacak, bu yüzden bu OOP nasıl emin değilim. Ya da, ben sadece her veri ilişkili seti ile ilgileniyor denetleyicileri her bir statik işlev eklemek olabilir - tüm haberler öğeleri göstermek için bir News_Controller örn yanı sıra, fonksiyonları, tek tek haber vs, ben bir statik işlev ekleyebilirsiniz sadece ben gerek görünümü dönen tarafından news feed oluşturmak için. Ben bu basit parçacıkları için bir nesne örneğini istemiyorum gibi bu yaklaşım, çalışabilir düşünüyorum, bu yüzden ilgili denetleyicileri statik fonksiyona sahip anlamda biraz yapar. Burada bilinç akışı biraz, ama bir anlam mı yapıyorum?!

3 Cevap

Birçok çerçeveler tipik bu tür bir şey için kullanılan "partials", bazı kavramı var.

Bu Partials genellikle salt okunur, ve genellikle her sayfada (veya sayfaların bazı iyi tanımlanmış) görüntülenir beri, size bir sayfa için olduğu gibi denetleyicileri açısından düşünmeden onlara yaklaşım olabilir.

Diğer bir deyişle - o güzel hatırlıyorum eğer view / düzen kodu doğrudan modelleri için görüşmeler, sürece sadece onları sorguluyor gibi.

Ben böyle şeyleri her zaman yapmak:

layout.php:

<div id="newsWidget">
<?PHP $news = Model_News::latest(); ?>
<?PHP foreach($news as $newsitem): ?>
<!-- output some news headlines -->
<?PHP endforeach; ?>
</div>

Model_News :: son () bu düzen kodu olduğundan, vb, bazı önbelleğe alma uygulamak olabilir ve ben muhtemelen her istek üzerine db vurmak istemiyorum.

Hiçbir kontrol-kabartmak gerekli!

Sen Hiyerarşik Model-View-Controller (HMVC) içine bakmak isteyebilirsiniz. Özellikle parçacıkları ile sayfaları yapmaya uygun oluyor. Ben Kohana uygulayan inanıyorum.

Temelde, her pasajı sorumlu birden Model-View-Controller üçlüleri her vardır. Yani Haber veritabanına erişmek ve haber ekranlarının farklı türleri için küçük çeşitli görünümlerde yüklemek için bir denetleyicisi olabilir.

Sen mimar bir dizi olarak iade edilecek ayarlanmış veri sağlayan bir mekanizma sağlamak için MVC deseni olabilir. Örneğin, /news/feed/ ilgili veri seti ve daha sonra bir görünüme geçirilmeden neden olacaktır normal bir web istek. Web isteklerine ek olarak, sistem aynı zamanda, yani $vars = $this->call('/news/feed/'); sistemi iç talebi tanımak ve dönüş set vars ziyade bir görünüm çağırarak olacak, bir denetleyici böyle bir talepte bulunmak için izin vermelidir.

Bu yapışkan denetleyicileri ve modelleri tutmak için izin verir.