2012-04-01 10 views
7

Tôi đang cố gắng tải các tài nguyên kiểu/tập lệnh cụ thể cho một mô-đun cụ thể trong ứng dụng của mình.Mô hình khởi động kiểu mô-đun cụ thể trong Zend Framework

Dưới đây là cấu trúc ứng dụng của tôi:

-application 
    -configs 
    -controllers 
    -forms 
    -layouts 
    -models 
    -modules 
    -admin 
     -configs 
     -controllers 
     -models 
     -views 
     -Bootstrap.php 
    -views 
    -Bootstrap.php 

Vấn đề tôi đang gặp là: các phong cách và các kịch bản tôi tải qua headLink()headScript trong /application/modules/admin/Bootstrap.php cũng đang được nạp vào bộ điều khiển của tôi/hành động mà là không phải là trong mô-đun admin. Dưới đây là Bootstrap.php tôi 's

/application/Bootstrap.php:

protected function _initDoctype() 
{ 
    $this->_logger->info('Bootstrap ' . __METHOD__); 

    //init the view 
    $this->bootstrap('view'); 
    $view = $this->getResource('view'); 
    $view->doctype('XHTML1_STRICT'); 

    //Set title and separator 
    $view->headTitle('Sunny Rose Photography') 
     ->setSeparator(' | '); 

    //Load global stylesheets 
    $view->headLink()->appendStylesheet('/styles/styles_main.css') 
     ->headlink()->appendStylesheet('/scripts/jquery-ui-1.8.17/themes/base/jquery-ui.css'); 

    //Load Scripts 
    $view->headScript()->prependFile('/scripts/jquery-1.7.1/jquery-1.7.1.js') 
     ->headScript()->appendFile('/scripts/jquery-ui-1.8.17/ui/minified/jquery-ui.min.js') 
     ->headScript()->appendFile('/scripts/gallery.js') 
     ->headScript()->appendFile('/scripts/scripts_main.js'); 
} 

/application/modules/admin/Bootstrap.php:

protected function _initDoctype() 
{ 
    $this->bootstrap('view'); 
    $view = $this->getResource('view'); 
    $view->headLink()->appendStylesheet('/styles/admin/styles_admin.css'); 
    $view->headScript()->appendFile('/scripts/admin/scripts_admin.js'); 
} 

tôi có thể xem như thế nào hoặc có thể lý do tại sao nó làm nó: vì tôi nhận được quan điểm từ bốt chính (?). Câu hỏi của tôi là, làm cách nào để tải các tệp định kiểu và/hoặc tệp tập lệnh cụ thể?

Tôi xin lỗi nếu đây là câu hỏi trùng lặp, tôi đã tìm kiếm các từ khác nhau của tiêu đề của câu hỏi và tôi không tìm thấy bất kỳ điều gì kết luận.

Cảm ơn, Ken

Trả lời

4

Không thể xác định tên mô-đun lúc khởi động. Chỉ sau routeShutdown bạn sẽ biết về tên mô-đun. Nếu bạn đang sử dụng bố trí sau đó mở application.ini

resources.layout.pluginClass = "My_Layout_Controller_Plugin_Layout" 

bên

class My_Layout_Controller_Plugin_Layout extends Zend_Layout_Controller_Plugin_Layout 
{ 

public function routeShutdown($request) 
{ 
    $moduleName = $request->getModuleName(); 

if($moduleName == 'admin') 
{ 
// load css , js for this specific module 
} 
} 
} 
+0

Làm thế nào sẽ sử dụng đi về bằng cách sử dụng 'headLink' vv như thế này vì những người cần phải được gọi là trên' xem'. tức là: '$ this-> bootstrap ('view'); $ view = $ this-> getResource ('view'); $ view-> headLink() -> appendStylesheet (''); $ view-> headScript() -> appendFile (''); ' – Ken

+1

$ this -> _ layout-> getView(); $ this -> _ layout là trường hợp của Zend_Layout có sẵn từ lớp cha –

+0

Tôi nghĩ rằng tôi bắt đầu để có được nó - Tôi chỉ có thể đi đến Zend/Layout/Controller/Plugin/Layout.php để xem những phương pháp nó có. Cảm ơn bạn rất nhiều. – Ken

1

bootstraps cho tất cả các module được thực hiện trên tất cả các yêu cầu.

Tôi có thể đề xuất đăng ký plugin bộ điều khiển phía trước từ trình khởi động và thực hiện phép thuật có điều kiện của bạn trên preDispatch().

+0

Cảm ơn, tôi sẽ tìm hiểu cách thực hiện việc này. – Ken

0

nếu bạn đang sử dụng một cách bố trí, một cách dễ dàng hơn là thêm một cái gì đó như sau để phía trên cùng của trang bố trí của bạn cho một mô-đun cụ thể:

$this->headLink()->appendStylesheet('/styles/admin/styles_admin.css'); 
$this->headScript()->appendFile('/scripts/admin/scripts_admin.js');