Я хочу включить внешний 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