Я пишу JavaScript следующим образом:
<?php $this->headScript()->captureStart();?> $(function(){ // some javascript magic }); <?php $this->headScript()->captureEnd(); ?>
Но проблема в том, что она не подсвечена и нет автозаполнения … Я пробовал написать вот так:
<?php $this->headScript()->captureStart();?> //<script> $(function(){ // some javascript magic }); <?php $this->headScript()->captureEnd(); ?>
Теперь он подсвечен, но netbeans недовольны не закрытым <script>
и некоторыми другими проблемами с Zend … Затем после того, как еще один поисковый запрос нашел это:
<?php if( false ) {?><script><?php } ?> $(function(){ // some javascript magic }); <?php if( false ) { ?></script><?php } ?>
Отлично работает, но, возможно, для этого есть лучшее решение?
Вы можете расширить HeadScript, это самое простое решение:
class My_View_Helper_HeadScript extends Zend_View_Helper_HeadScript { public function captureEnd() { $content = ob_get_contents(); ob_clean(); echo strip_tags($content, 'script'); parent::captureEnd(); } }
Укажите вспомогательный путь:
resources.view.helperPath.My_View_Helper = "My/View/Helper"
Применение:
<?php $this->headScript()->captureStart();?> <script> alert(1); </script> <?php $this->headScript()->captureEnd(); ?>
Напишите js во внешних JS-файлах.
Это обеспечит лучшее разделение, лучшее кэширование, лучшую агрегацию, лучшую подсветку и т. Д.
Вот некоторые ссылки, которые могут вам помочь: