лучший способ включить js-файл в zend-framework

Я хочу включить внешний js-файл в свой php-скрипт. Я следую за zend framework. Теперь я добавляю js-файл в функцию инициализации контроллера, как это.

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'); } 

проблема, с которой я столкнулся, – js-файл doesnot include.Is это правильный способ включить js-файл?

JavaScript (и изображения, CSS, флеш-ролики и т. Д.) Относятся к слою представления, поэтому настройте их там.

Для файлов с глобальным включением добавьте их в макет, например

 <!-- 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> 

Затем ваши сценарии просмотра могут добавлять активы к помощникам, которые повторяются в макете. Поскольку макет использует методы prepend*() , сначала будут отображаться глобальные файлы, например

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

В вышеприведенном решении сценарий «путь / to / file.js» будет включен в заголовок дважды. Не нужно echo перед вызовом prependFile . Такое поведение может привести к дублированию элементов управления javascript.

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