Ben adlı işletmeye modeli arayabilir miyim?
Yes, you can. Sürece separation of concerns M, V ve C arasında muhafaza gibi, sen adlı işletmeye Modeli (veya Kontrolör) çağrıda ücretsizdir. Çoğu MVC şemaları en az View ve Model arasında iki yönlü bir bağlantı gösteriyor. Eğer olsa yapmak istemiyorum, ne Görünümü içine Modeli (ya da kontrolörü) itibaren yer logic/code ve oradan modelini değiştirmek istemiyorum.
Örneğin, web sitenizin her sayfasında favori bloglar son on blog yazılarını başlıklarını toplayan sayfanızda bir widget olabilir. Sen arayarak manşetlere olsun demek MyFavFeeds::getLatest();
senin model. Lütfen seçenekleri nelerdir?
- Sen could denetleyici içine başlıkları almak için kodu ekleyin, ama bu DRY ilkesine aykırı olduğu, her denetleyici eylem çoğaltmak için gerektirecektir. Ayrıca, kumandanın endişe handling user input for specific actions ve her çağrı başlıkları getiriliyor hatta bu eylemleri ile ilgili değil ise muhtemelen.
- Lütfen mimari bunu destekliyorsa, başlıkları bir eklenti veya geri arama gelen Görünümü yüklenir ve enjekte olsun, yani preDispatch kanca çeşit verileri almak olabilir. Bu KURU olurdu, ama ikinci bir geliştirici bu eklenti farkında olmak ve kazayla değişken onun denetleyici eylem başlıkları tutarak üzerine değil olabilir. Ve örneğin, sen başlıkları yüklemek istemem hangi durumlar olabilir zaman sadece form tabanlı gönderimleri için onay sayfaları oluşturma, bu nedenle daha sonra eklentiyi devre dışı bırakmak için mekanizmaya sahip olurdu. Yani düşünün bir çok şey var.
- Sen Görünümü veya Düzen şablonu içine
MyFavFeeds::getLatest()
(değil kod) için arama ya, daha iyi bir ViewHelper, sizin model sınıfı için çağrı saklar ve widget'ı vermektedir. Bu şekilde herhangi bir değişken veya tekrarını yazılmadan konusunda endişelenmenize gerek yok. Eğer görünümü başlıkları gerekmez zaman, sadece onu dahil değildir.
Diğer soru hakkında:
In my View, I'm calling a Model that
runs my authentication system, and
requesting the login status of a user.
I then use that boolean to decide
whether to show certain elements
within the view, and where to place
others.
Kimlik Doğrulama herhangi bir denetleyici eylemleri denir önce, erken uygulama akışında yapmak istediğiniz bir şeydir. Böylece, olmamalıdır run your (entire) authentication system görünümünde. Gerçek kimlik View-ilişkili mantık değil. Sadece kimlik doğrulamasından sonra kullanıcı durumunu talep, diğer taraftan, tamam. Eğer kullanıcı adı gösteren ve giriş / çıkış düğmesine veren bir widget'ı işlemek istiyorsanız Örneğin, bu gibi bir şey yapmak için iyi olurdu
<?php //UserHelper
class UserMenuHelper
{
public function getUserMenu()
{
$link = '<a href="/user/logout">Logout</a>';
if(MyAuth::userHasIdentity()) {
$link = sprintf('<a href="/user/logout">Logout %s</a>',
MyAuth::getUsername());
}
return $link;
}
}
Bir Kullanıcı rolü ile modifiye edilebilir için GUI daha büyük bölümlerini var ise, kısmi bloklar halinde ayrı senin Görünüm kırmak ve durumuna göre bunları içeren, yerine görüntüle Yardımcısı içine tüm HTML yazma isteyebilirsiniz.
Sadece kullanıcı rolüne dayalı bir navigasyon işlemek için arıyorsanız, bunu nasıl görmek için Zend Framework adlı Zend_Navigation
ve Zend_Acl
bakabilirsiniz.