2016-03-04 2 views
1

Я использую ZF2 и сталкиваюсь с странным поведением. Когда я использую headScript для добавления или добавления некоторого файла Javascript, файл включается дважды. То же самое происходит с inlineScript.ZF2 headScript, включая тот же файл дважды

Это мой фактический вид с headScript() -> appendFile():

<?php echo $this->headScript()->appendFile($this->basePath('js/dashboard.min.js')); ?> 

С этой реализации, когда моя страница загружается, все запросы сделаны дважды, и это очень плохо причиной являются асинхронных запросов к API:

Test 
[2, 1, 0, 0, 0, 0, 0] 
Test 
[2, 1, 0, 0, 0, 0, 0] 

Я попытался также без $this->basePath():

<?php echo $this->headScript()->appendFile('js/dashboard.min.js'); ?> 

И получил то же поведение.

Но если я поместил этот Javascript без headScript, он просто отлично работает, включите один раз.

<script src="js/dashboard.min.js"></script> 

// And the output 
Test 
[2, 1, 0, 0, 0, 0, 0] 

Что можно видеть, что первый включает сделан, когда страница загружена, а второй несколько секунд после того, как (2-х или 3-х секунд).

Кто-то уже сталкивался с таким поведением? Если да, решила ли это? Как?

ответ

2

Я считаю, что проблема в том, что вы эхом отдаете от headScript. Попробуйте удалить инструкцию echo, и я считаю, что она будет работать нормально.

Используйте это:

<?php $this->headScript()->appendFile($this->basePath('js/dashboard.min.js')); ?> 

Вместо этого:

<?php echo $this->headScript()->appendFile($this->basePath('js/dashboard.min.js')); ?> 
+0

Человек, я не верю. Я всегда использую эхо ... Я получаю пример скелета и думаю, что все в порядке (https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/view/layout/layout.phtml). Большое спасибо! –

+2

Как и в приложении скелета, вы хотите только повторить его. Если вы повторите вызов appendFile и позже эхом откройте его, вот почему вы получаете дублирование. –

+0

Nice @TimFountain, я этого не знал. Спасибо за совет. –

Смежные вопросы