Zend Framework: Zend_View Basic Placeholders

Zend Framework: Zend_View Basic Placeholders

Bài viết trước có bàn đến placeholder kết hợp với một số Zend_View_Helper trong việc thay đổi nội dung phần tử <head> tùy theo từng controller hay action, bài viết này sẽ bàn đến việc tạo ra những thay đổi nội dung cho các phần tử khác trên layout, ví dụ như ứng dụng tạo cấu trúc phần sidebar.

Đầu tiên nếu bạn muốn cấu trúc HTML phần sidebar của bạn như sau:

<div class="sidebar">
    <div class="block">
        <p>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        </p>
    </div>
    <div class="block">
        <ul>
            <li><a href="/some/target">Link</a></li>
            <li><a href="/some/target">Link</a></li>
        </ul>
    </div>
</div>

Cấu trúc HTML trên ta thấy phần tử có class="sidebar" sẽ bao tất cả, các phần tử khác bên trong sẽ được đặt trong phần tử có class="block".

Nội dung sidebar sẽ được thay đổi dựa trên từng controller và action, nhưng cấu trúc của chúng sẽ đươc thống nhất, ta sẽ thực hiện điều này bằng cách thực hiện xây dựng nó trong tập tin bootstrap như sau:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{
  protected function _initSidebar(){
     $this->bootstrap('View');
     $view = $this->getResource('View');

     $view->placeholder('sidebar')
       ->setPrefix("<div class=\"sidebar\">\n    <div class=\"block\">\n")
       ->setSeparator("</div>\n    <div class=\"block\">\n")
       ->setPostfix("</div>\n</div>");
  }
}

Bây giờ để đưa cấu trúc placeholder vào một controller nào đó để áp dụng cho tất cả các action bạn sẽ khai báo phương thức preDispatch() trong controller, ở đây bạn có thể trực tiếp đưa nội dung của placeholder vào phương thức preDispath() hoặc render một tập tin view script vào nó như ví dụ sau:

Chúng ta sẽ tạo ra một tập tin trong view script index/_sidebar.phtml

<?php $this->placeholder('sidebar')->captureStart() ?>
<h4>sidebar</h4>
<ul>
    <li><a href="#">List</a></li>
    <li><a href="#">Create</a></a></li>
</ul>
<?php $this->placeholder('sidebar')->captureEnd() ?>

Khai báo phương thức preDispath() trong controller và render tập tin _sidebar.phtml

class IndexController extends Zend_Controller_Action{
  public function preDispatch(){
      $this->view->render('index/_sidebar.phtml');
  }
}

Để thêm thông tin vào sidebar ở một action nào đó trong cotroller trên thì trong view script của action đó ta gọi tới palceholder('sidebar') và sử dụng phương thức append hay prepend để thêm nội dung. Ví dụ:

$this->placeholder('sidebar')
     ->append('<p>Lorem ipsum dolor sit amet</p>');

Bây giờ bạn có thể xuất placeholder vào tập tin layout của bạn nơi nào bạn muốn. Ví dụ:

<html>
<head>
    <title>My Site</title>
</head>
<body>
    <div class="content">
        <?php echo $this->layout()->content ?>
    </div>
    <?php echo $this->placeholder('sidebar') ?>
</body>
</html>

Tham khảo framework.zend.com

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Thị trường bắt đầu xuất hiện động thái gom hàng giá rẻ

Thị trường bắt đầu xuất hiện động thái gom hàng giá rẻ

Trong khi phần lớn người dân vẫn trông chờ giá bất động sản sẽ giảm thêm thì trên thị trường bắt đầu xuất hiện động thái gom hàng giá rẻ của một bộ phận giới đầu cơ.

Sony xác nhận Xperia Arc S và Mini Pro không được cập nhật Jelly Bean

Tin buồn cho người sử dụng 2 thiết bị này, Sony sẽ không công bố bản cập nhật Jelly Bean chính thức nào cho Xperia Arc S và Mini Pro.

Bamboo Paper - Ứng dụng viết vẽ cho iPad

Bamboo Paper - Ứng dụng viết vẽ cho iPad

Bề mặt hết sức lý tưởng cho thao tác viết và vẽ của iPad là một điểm mạnh mà ứng dụng Bamboo Paper hiểu và khai thác.

Công ty diệt chuột T&C

 

Diet con trung