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

 
Cách chặn tin nhắn quảng cáo phiền phức trên Facebook Messenger

Cách chặn tin nhắn quảng cáo phiền phức trên Facebook Messenger

Dạo gần đây đang rộ lên phong trào spam tin nhắn rác vô tội vạ và hầu như ngày nào mình cũng nhận được ít nhất là 10 tin quảng cáo từ những nick không phải bạn bè

Samsung được cấp giấy phép thiết kế VXL ARM 64 bit

Samsung được cấp giấy phép thiết kế VXL ARM 64 bit

Việc Samsung được cấp giấy phép thiết kế VXL ARM 64 bit cho thấy hãng sản xuất chip này có thể mở rộng phạm vi từ smartphone và MTB để nhảy vào thị trường máy chủ.

Intel tung chip cao cấp Core i7 “Haswell-E” vào Q3/2014

Với Haswell-E, Intel có thể sẽ tung chip 6 nhân dòng giá rẻ hứa hẹn sẽ chỉ có giá khoảng 400 USD, còn chip 8 nhân có giá khoảng 600 USD. Bản chip 8 nhân Extreme Edition sẽ có giá ở mức 1000 USD.

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

 

Diet con trung