Zend Framework: Nasıl bir modüler uygulamasında düzen dizin ayarlarım?

2 Cevap php

Ben başarmak için çalışıyorum dizin yapısı bu olurdu:

application/default/views/layouts/layout.phtml
application/default/views/scripts/index/index.phtml
application/admin/views/layouts/layout.phtml
application/admin/views/scripts/index/index.phtml
library/Zend
config/config.ini
public/index.php (bootstrap)

ama Zend benim modüllerin her biri benim layout.phtml bulalım anlamaya olamaz.

Benim bootstrap ben var:

define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/'));
define('APPLICATION_ENVIRONMENT', 'testing');

//setup path to our library files
set_include_path( APPLICATION_PATH . '/../library' . PATH_SEPARATOR .
                  get_include_path() );

//register the autoloader
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload(); 

//set config in the registry
$config = new Zend_Config_Ini( APPLICATION_PATH . '/../config/config.ini', APPLICATION_ENVIRONMENT ); 
Zend_Registry::set('config', $config);

//setup logging
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . '/../log/debug.log');
$logger = new Zend_Log($writer);
Zend_Registry::set('logger', $logger);

//run!
$frontController = Zend_Controller_Front::getInstance();
$frontController->addModuleDirectory(APPLICATION_PATH);
//initialize Zend_Layout's MVC helpers
Zend_Layout::startMvc();

$frontController->throwExceptions(true);

try {

    Zend_Controller_Front::getInstance()->dispatch();

} catch (Exception $exception) {

    echo '<html><body><center>'  . 'An exception occured while dispatching the front controller.'; 
    if (defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production'  ) {
        echo '<br /><br />' . $exception->getMessage() . '<br />'  . '<div align="left">Stack Trace:' . '<pre>' . $exception->getTraceAsString() . '</pre></div>'; 
    }
    echo '</center></body></html>';
    exit(1);
}

Nerede yanlış gidiyorum?

Update:

Ben uzun zamandır bu bakmadım, bu yüzden kabul çözümü up-to-date olmayabilir. Herkes bu sorunun bir daha up-to-date çözüm göndermek istiyorsa (yani ZF 1.8 +), bunu lütfen! Bu bir çözüm arıyoruz başkalarına yararlı olacaktır.

2 Cevap

Sen Per Module Zend_Layout, bu makalede, yazar size ulaşmak için çalışıyoruz tam olarak ne kapakları kontrol etmelisiniz. Onun metodolojisi düzen kaydı işlemlerini, ön denetleyicisi için bir eklenti yazmak için.

Zend Framework 1.12 (önceki sürümleri üzerinde test mı): kutunun çalışır!

Ben genellikle düzenleri etkinleştirmek için Orther yılında, yani kurulum şeyler application.ini kullanın:

resources.layout.layout = "layout"

... Veya varsayılan düzen aranmalıdır olursa olsun. "LayoutPath" Zend_Layout "layout.phtml" adlı bir dosya için "Başvuru / modules / / views / komut" içine bakacağız tanımlanmamıştır gibi

Eğer zend aracını kullanırsanız, aşağıdaki satırı ile düzenleri başlayacak:

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

Bu sadece dizini silmek veya varsayılan "layout.phtml" yaratmaktan kaçınmak da gayet iyi. Varsayılan düzen bu dizinde bulunamazsa o "Uygulama / modules / / views / komut" içeride "layout.phtml" için daha önce olduğu gibi de modülleri içine bakacağız.

Düzen bir modül içinde bulunmazsa, o varsayılan modülün düzenini yükleyecektir.

Bu kadar basit!

Eğer şablonu ile bazı ekstra çalışmaya ihtiyaç varsa, örneğin bunun için bir eklenti ekleyebilirsiniz:

resources.layout.pluginClass = "YourLibrary_Controller_Plugin_Layout"

ve bunun içinde bazı ekstra şeyler yapmak.