Bir denetleyici içinde bir kontrolör çağırıyor?

4 Cevap php

Bildiğim kadarıyla en iyi uygulamalar gitmek olarak bu tavsiye edilir? Ben bir öğe olarak adlandırılan gerekir ve denetleyici profilleri bir yorum denetleyicisi + modeli var. Yorumlar kontrolör otomatik yorumlar modeli yükler.

Bu öğeler ve profil kontrolörünün doğrudan yorumlar denetleyicisi aramak için kabul edilebilir, ya da bunun yerine yorumlar modeli aramak için "en iyi uygulama" yolu nedir?

Ben başka bir kontrol içinde bir kontrolör aramak için olsaydı ben iki görüş ile sonuna kadar böylece Kohana de, görünümü bir tek sınıf değildir, çünkü ben soruyorum. Ben sadece modelini aramak olsaydı Öte yandan, öğeleri ve profilleri kontrolör içinde yinelenen kod olacaktır.

Tüm MVC uzmanlar yardım! =)

4 Cevap

Genel olarak, ben "Fat Modeli" bir yaklaşım için gitmek istiyorum.

Ben hakkında çoğaltma gerçekten endişeleniyorsanız hangi kod emin değilim.

Bunu yapabileceği bir kaç yolu vardır:

First way: - Interrogate your Comments model to return some comments. - Pass the comment data into your view. - Render the comments in the view, possibly using some view helper

Second Way: - Realize that there's no reason your view can't talk directly to your model. - Write a view helper that grabs the data it needs directly from the model, and renders it.

Ben ikinci yolu tercih ederim. Bazı insanlar (salt okunur moda!) Modeli kendi bakış katman konuşmak icar bir sorun var, ama ben onlardan biri değilim.

Eğer Kohana 3 kullanıyorsanız, HMVC özelliğinden yararlanabilir. Sen denetleyicileri içinde kontrolörleri yürütebilirsiniz.

http://forum.kohanaphp.com/comments.php?DiscussionID=2768

Bazı örnekler için yukarıdaki bağlantıyı kontrol

Ben sizin denetleyici döner ne bağlıdır söyleyebilirim.

Controller olduktan sonra, DTOS / Modeller dönebilirsiniz eğer, bir kontrol çağıran iyi bir fikirdir.

Sizin denetleyicisi işlevselliği bir katı, belgelenmiş, ve umarım istikrarlı bir giriş noktalarını tanımlar. Bu nedenle, tamamen çok uzun Kontrol yönteminin imzasını değiştirmek Yüklü olarak, Yorum uygulanmasını görmezden, ya da at will değiştirebilirsiniz.

Lütfen Kontrolör ham verileri dönemeyen olup olmadığını karşılığında html (ya da diğer biçimlendirme) alıyoruz çünkü Ancak, o zaman, kesinlikle prolematic bulunuyor. Yani istediğiniz görünüme doğrudan html boru var, veya ondan veri ayıklamak olacak anlamına gelir. Bunların ikisi de kötü bir fikir.

Ham html boru Eğer Yorumlar için görünümünü değiştirmek durumunda, Profil modül üzerindeki yorumların ekran kaçınılmaz olarak değişecek anlamına gelir. Bu ne istediğiniz olabilir, ama ben esneklik için gitmek istiyorum.

Veri isteseydi Şimdi, ağır sizin bakış döndü biçimlendirme, veri ayıklamak ve üretken karşı gerekecek.

Eğer statik bir yöntemi çağırmak için çalışıyorsanız, sadece doğrudan işlevini çağırabilirsiniz. Örneğin:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}