Zend Framework - Düzen
Bir Düzen, birden çok görünümün ortak parçalarını temsil eder, örneğin, sayfa üstbilgisi ve altbilgi. Varsayılan olarak, düzenler şurada saklanmalıdır:view/layout Klasör.
Bir Düzen yapılandırması, view_manager module.config.php'deki bölüm.
İskelet uygulamasının varsayılan yapılandırması aşağıdaki gibidir -
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
Burada template_mapdüzeni belirtmek için kullanılır. Düzen bulunamazsa, bir hata verecektir. İskelet uygulamasının ana düzenine bir göz atalım.
Layout.phtml
<?= $this->doctype() ?> <html lang = "en"> <head> <meta charset = "utf-8"> <?= $this->headTitle('ZF Skeleton Application')->setSeparator(' - ')>
setAutoEscape(false) ?>
<?= $this->headMeta() ->appendName('viewport', 'width = device-width, initial-scale = 1.0') ->appendHttpEquiv('X-UA-Compatible', 'IE = edge') ?> <!-- Le styles --> <?= $this->headLink(['rel' => 'shortcut icon', 'type' =>
'image/vnd.microsoft.icon',
'href' => $this->basePath() . '/img/favicon.ico']) ->prependStylesheet($this->basePath('css/style.css'))
->prependStylesheet($this->basePath('css/bootstraptheme.min.css')) ->prependStylesheet($this->basePath('css/bootstrap.min.css'))
?>
<!-- Scripts -->
<?= $this->headScript() ->prependFile($this->basePath('js/bootstrap.min.js'))
->prependFile($this->basePath('js/jquery-3.1.0.min.js')) ?> </head> <body> <nav class = "navbar navbar-inverse navbar-fixed-top" role = "navigation"> <div class = "container"> <div class = "navbar-header"> <button type = "button" class = "navbar-toggle" data- toggle = "collapse" data-target = ".navbar-collapse"> <span class = "icon-bar"></span> <span class = "icon-bar"></span> <span class = "icon-bar"></span> </button> <a class = "navbar-brand" href = "<?= $this->url('home') ?>">
<img src = "<?= $this->basePath('img/zf-logo-mark.svg') ?> " height = "28" alt = "Zend Framework <?= \Application\Module:: VERSION ?>"/> Skeleton Application </a> </div> <div class = "collapse navbar-collapse"> <ul class = "nav navbar-nav"> <li class = "active"><a href = "<?= $this->url('home') ?>">Home</a></li>
</ul>
</div>
</div>
</nav>
<div class = "container">
<?= $this->content ?> <hr> <footer> <p>© 2005 - <?= date('Y') ?> by Zend Technologies Ltd. All rights reserved.</p> </footer> </div> <?= $this->inlineScript() ?>
</body>
</html>
Düzeni analiz ederken, çoğunlukla önceki bölümde tartıştığımız görüntü yardımcılarını kullanır. Daha yakından baktığımızda, düzen özel bir değişken kullanır,$this->content. Bu değişken, istenen asıl sayfanın görünüm komut dosyası (şablon) ile değiştirileceğinden önemlidir.
Yeni bir düzen oluşturmak
Öğretici modülümüz için yeni bir düzen oluşturalım.
Başlamak için bir oluşturalım tutorial.css file “public / css” dizini altında.
body {
background-color: lightblue;
}
h1 {
color: white;
text-align: center;
}
Yeni bir düzen dosyası oluşturun newlayout.phtml/ myapp / module / Tutorial / view / layout / dizinine gidin ve içeriği mevcut düzenden kopyalayın. Ardından,tutorial.css stil sayfasını kullanarak HeadLink düzen başlığı bölümünün içindeki yardımcı sınıf.
<?php echo $this->headLink()->appendStylesheet('/css/tutorial.css');?>
Yeni ekle about bağlantısını kullanarak gezinme bölümünde URL yardımcı.
<li><a href = "<?= $this->url('tutorial', ['action' => 'about']) ?>">About</a></li>
Bu düzen sayfası, eğitim modülü uygulaması için ortaktır. Güncelleview_manager eğitim modülü yapılandırma dosyasının bölümü.
'view_manager' => array(
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/newlayout.phtml'),
'template_path_stack' => array('tutorial' => __DIR__ . '/../view',),
)
Ekle aboutAction işlevi TutorialController.
public function aboutAction() {
}
Ekle about.phtml myapp / module / Tutorial / view / tutorial / tutorial / aşağıdaki içeriğe sahip.
<h2>About page</h2>
Artık uygulamayı nihayet çalıştırmaya hazırsınız - http://localhost:8080/tutorial/about.