Zend Framework - için düzeni en iyi uygulamalar 'içerir'

4 Cevap php

Ben Zend oldukça yeniyim .. Ben sadece benim sitenin düzeni / yapısını modellemek için nasıl merak ediyorum. Sitemin bir kullanıcı profili bölümü, admin bölümü ve sitenin genel varsayılan görünümü olacaktır.

Admin ve profil için, aksi takdirde ben bir genel başlık / altbilgi varsayılan istiyorum, üstbilgi ve altbilgiler özel unsurlar var olacak.

Ben tamamen özel bir cilt nasıl şeyleri yapısı gerekir, varsayılan görünümden ayırmak zorunda yeteneği istiyor?

Şimdiye kadar application/ layouts adında bir dizin oluşturduk var. Bunun için hesapları yüzden application.ini dosyasını değiştirdiyseniz:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

Yani benim varsayılan düzeni görünümü artık application/layouts/scripts/layout.phtml, ben bu layout.phtml dosyasında gömülü üstbilgi ve altbilgi var ama ben ayrı dosyalarda onları onları soymak ve istiyorum bulunmaktadır.

Herkes bunun için yapı ile geliyor bana yardımcı olabilir? Yani yeniden tekrarlamak bir özel varsayılan düzen, özel yönetici düzen, özel kullanıcı profili düzen, ve ben özelleştirilebilir başlığı / altbilgi isteyen tüm 3 düzenleri için "içeren" istiyorum ama ben bu Zend düzgün yapılır nasıl emin değilim ben 'dosyaları dahil alışık değilim.

4 Cevap

Dizin yapısı:

/application
  /layouts
    /scripts
      /layout.phtml
      /profile.phtml
      /admin.phtml
      /_header.phtml
      /_footer.phtml

layout.phtml:

<?php echo $this->doctype('HTML4_STRICT') ?>
<html> 
<head>  
  <title>Bah</title>
</head> 
<body>
  <?php echo $this->render('_header.phtml') ?>
  <?php echo $this->layout()->content ?>
  <?php echo $this->render('_footer.phtml') ?>
</body>
</html>

profile.phtml:

<?php echo $this->doctype('HTML4_STRICT') ?>
<html> 
<head>  
  <title>Profile</title>
</head> 
<body>
  <!-- profile header -->
  <?php echo $this->layout()->content ?>
  <!-- profile footer-->
</body>
</html>

FooController.php:

profileAction()
{
    // do stuff
    $this->_helper->layout->setLayout('profile');
}

Bu yöntem (yönetici aniden bir kenar çubuğu ihtiyacı var!) Farklı düzenleri tüm sayfa yapısını değiştirmek için olanak sağlar. Siz gelişmiş esneklik ve sürdürülebilirlik için bazı kod tekrarını kapalı ticaret.

Bu sizin için önemli değilse, bir görünüm yardımcı (istek yönetici veya profil ya eylemler, anahtarından gelen olmadığını öğrenmek için Ön Kontrol sorgulamak) de çalışır. Olsa benim tadı için, mantık bu tür görünümde ait çok ilgilenmektedir.

Görünümü yardımcıları karmaşık kullanımı beton görünümü yardımcı iseniz. Onlar gibi basit iseniz <h1>my title</h1> bir şablon oluşturmak için kısmi görünümü yardımcıyı kullanın.

To have a different layout/config for various sections of a site, I use Modules with the following module setup. Module Config

[Düzenle]

Dizin Yapısı:

/application
    /forms
    /models
    /modules
        /admin
            /config
            /contollers
            /layout
            /views
        /default
            /config
            /contollers
            /layout
            /views

Ben aşağıdaki gibi kullanmak bir uygulamasıdır:

Düzen phtml dosyaların her biri (varsayılan, yönetici, vs)

I kullanın:

<?= $this->action('header', 'page', 'default') ?>
<?= $this->layout()->content ?>
<?= $this->action('footer', 'page', 'default') ?>

bu yüzden benim sayfa denetleyicisi ben "headerAction" ya bir şey yapmaz "adminHeaderAction" olarak adlandırılan bir eylem (aslında veya belirli görevleri yerine getirebilir) var ama (ben bu düzeni benim başlık bilgilerini özelleştirebilirsiniz) bir header.phtml döndürür olabilir. Sonra benim başlığı ve içeriği ayrı altbilgi özelleştirebilirsiniz.

Benim denetleyicisi ben sadece uygun düzenini ayarlamanız gerekir:

$this->_helper->layout->setLayout('adminLayout');