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

 
Mark Carver đã design xong cho Drupal Community trên Drupal.org

Mark Carver đã design xong cho Drupal Community trên Drupal.org

The styling changes on Drupal.org are a nice improvement, mostly because it is a regular reminder about the individuals who are pushing to make Drupal better

Nokia Lumia 720 có giá hơn 7 triệu đồng

Nokia Lumia 720 có giá hơn 7 triệu đồng

Sau Lumia 520 giá rẻ, tới lượt Lumia 720 được Nokia phát hành chính hãng tại Việt Nam kể từ tuần sau (8/4) với giá 7.249.000 đồng.

Mai Ngọc sinh năm 1990. Là một trong những hotgirl Hà thành đời đầu, Mai Ngọc ghi dấu ấn với các bản tin thời tiết của VTV trước khi chuyển qua làm thời sự. Năm 2019, Mai Ngọc bắt đầu dẫn bản tin Thời sự Việt Nam hôm nay lúc 17h30 của VTV và là một trong những gương mặt quen thuộc của bản tin này từ đó đến nay

Tin nóng ngày 3.5.2021 - trước khi hành động nên quan sát các cảm giác trên thân

Con người hay có xu hướng Chê bai người khác khi cho rằng điều này họ làm sai, làm chưa đúng và phẫn nộ khi điểu đó có những hậu quả rất lớn.

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

 

Diet con trung