首頁 > PHP, Zend Framework > Zend Framework 建立 Layout

Zend Framework 建立 Layout

2011年1月21日 發表評論 閱讀評論

建立 Layout

專案在設計時,我們要專注於每個區塊及其功能,於是在留言版範例,我們頁面 view 的 script 只有要顯示的內容 html 部份,而不是完整頁面的 html,當我們要產生完整的 html 時,我們需要一個全域的網站 layout。

在此我們使用 Zend_Layout 來完成這件事。

要產生這個設定,可以用 zf 指令來設定,如下:

andy@nb3vm:~/www/rdlab/application$ zf enable layout
Layouts have been enabled, and a default layout created at
application/layouts/scripts/layout.phtml
A layout entry has been added to the application config file.

就會在 application/configs/application.ini 裡產生設定

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

這個設定,是告訴 application 要在 application/layouts/scripts 下尋找 layout

以我的例子來看就會是在 application/layouts/scripts/ 下產生了一個 layout.phtml

其內容如下:

<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Zend Framework Quickstart Application</title>
  <?php echo $this->headLink()->appendStylesheet('/css/global.css') ?>
</head>
<body>
<div id="header" style="background-color: #EEEEEE; height: 30px;">
    <div id="header-logo" style="float: left">
        <b>ZF Quickstart Application</b>
    </div>
    <div id="header-navigation" style="float: right">
        <a href="<?php echo $this->url(
            array('controller'=>'guestbook'),
            'default',
            true) ?>">Guestbook</a>
    </div>
</div>

<?php echo $this->layout()->content; ?>

</body>
</html>

這就是我們的全域 layout 的內容了。


在 application/Bootstrap.php 新增一個初始化,來加入 XHTML DOCTYPE 的宣告

< ?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initDoctype()
    {
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $view->doctype('XHTML1_STRICT');
    }

}

有了這個 method,我們還需要告知 view 去使用正確的 DOCTYPE,所以我們要初始化 view 的 resource

在 application/configs/application.ini 中的 production 區塊加上下面這一行:

resources.view[] =

目前這裡的設定是初始化沒有選項的 view:「[]」指定資源的鍵值 “view" 是個 array,而我們給了個空值。

結合了 Zend_Layout 和設定 Doctype,以 doctype() 這個 view helper 秀出 DOCTYPE 宣告

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

以 headLink() 加上指定的 css 或其他 的東西
以 layout() 的 content key來顯示內容

即完成完整頁面的呈現

Categories: PHP, Zend Framework Tags: ,
  1. 目前尚無任何的評論。