2012-04-11 32 views
6

Tôi muốn đưa tệp js bên ngoài vào tập lệnh php của mình. Tôi đang theo khuôn khổ zend.Đây bây giờ tôi đang thêm tập tin js trong chức năng init của bộ điều khiển như thế này.cách tốt nhất để bao gồm tệp js trong khung công tác zend

public function init() { 
    $this->doUserAuthorisation(); 
    parent::init(); 
    $this->view->headScript()->appendFile($this->view->baseUrl().'/js/front_cal/jquery-1.3.2.min.js'); 
    $this->view->headLink()->setStylesheet($this->view->baseUrl().'/styles/front_cal/calendar.css'); 
} 

vấn đề tôi đang gặp phải, tệp js không bao gồm.Đây có phải là cách thích hợp để bao gồm tệp js không?

Trả lời

12

JavaScript (và hình ảnh, CSS, phim flash, v.v.) thuộc về lớp xem để định cấu hình chúng ở đó.

Đối với toàn cầu bao gồm các file, thêm chúng vào bố trí của bạn, ví dụ:

<!-- layout.phtml --> 
<head> 
    <?php echo $this->headScript()->prependFile(
     $this->baseUrl('path/to/file.js')) ?> 
    <?php echo $this->headLink()->prependStylesheet(
     $this->baseUrl('path/to/file.css')) ?> 

<!-- snip --> 

    <?php echo $this->inlineScript()->prependFile(
     'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js') ?> 
</body> 

tập tin view của bạn sau đó có thể thêm tài sản cho những người giúp đỡ được lặp lại trong cách bố trí. Khi bố trí sử dụng prepend*() phương pháp, các tập tin toàn cầu sẽ được hiển thị đầu tiên, ví dụ:

<?php // views/scripts/index/index.phtml 
$this->inlineScript()->appendFile($this->baseUrl('path/to/script.js')); 
+0

hey bạn có biết vị trí mặc định của layout.pthml không? Tôi không thể tìm thấy nó trên máy chủ của tôi. – Xitcod13

+0

@Xitcod, 'Ứng dụng \ view \ layout \ layout.phtml' – Dennis

2

Trong giải pháp trên các 'path/to/file.js' kịch bản sẽ được bao gồm trong tiêu đề hai lần. Không cần echo trước khi gọi prependFile. Hành vi này có thể dẫn đến việc sao chép các điều khiển javascript.

<!-- layout.phtml --> <head> <?php echo $this->headScript()->prependFile( $this->baseUrl('path/to/file.js')) // this will echo out the whole prependFile queue

+0

Bạn có nghĩa là câu trả lời của tôi ở trên không? Không chắc chắn ý của bạn về việc nó được bao gồm hai lần. Câu trả lời của bạn giống hệt với phần của tôi – Phil

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