2009-10-23 22 views
60

Tôi chắc chắn đó là một lớp lót đơn giản, nhưng tôi dường như không thể tìm thấy nó.Làm cách nào để chuyển đổi tệp bố cục trong Zend Framework?

Tôi làm cách nào để sử dụng tệp bố cục khác cho một hành động cụ thể?

Cập nhật: Điều này làm việc cho tôi, cảm ơn!

// Within controller 
$this->_helper->_layout->setLayout('other-layout') //other-layout.phtml 

//Within view script 
<?php $this->layout()->setLayout('other-layout'); ?> 
+0

Ai đó có thể sửa '_helper_layout', nó phải là' _helper-> layout' – MitMaro

+0

. cảm ơn! – Andrew

Trả lời

62

Từ bên trong một điều khiển:

$this->_helper->layout->setLayout('/path/to/your/layout_script'); 

(qua these docs)

EDIT: Tôi nên đề cập đến rằng con đường là liên quan đến bất kì thư mục bố trí của bạn là (theo mặc định, nó application/layouts/scripts/)

+4

Hoặc, nếu layoutpath được đặt đúng ('$ layout-> setLayoutPath ('application/layouts/scripts')'), sử dụng '$ this -> _ helper_layout-> setLayout ('alternative_layout')' để tham chiếu 'application/layout/scripts/alternative_layout.phtml'. – chelmertz

+0

Từ bên trong chế độ xem: bố cục() -> setLayout ('/ path/to/your/layout_script')?> – Travis

+0

@Travis: Tôi sẽ không muốn loại logic đó trong tập lệnh xem trừ khi bạn chỉ có số lượng nhỏ các tập lệnh xem để bạn biết nơi để gỡ lỗi cho các cài đặt quan trọng của ứng dụng này. – chelmertz

13

Bạn cũng có thể sử dụng như thế này

// Within controller 
Zend_Layout::getMvcInstance()->setLayout('layout_name'); 

//Within view script 

<?php $this->layout()->setLayout('layout_name'); ?> 

Bố cục của bạn phải nằm trong/bố trí/tập lệnh/thư mục, nếu không bạn cũng cần chỉ định đường dẫn. Không cần phải viết .phtml, chỉ cần tên của bố cục

Các vấn đề liên quan