2014-04-22 6 views
1

제 레이아웃에서 자바 스크립트를 많이 사용하고 있습니다. 이 두 스크립트는 조건부이며 IE9 용으로 만로드해야합니다. 나머지 브라우저는 모든 브라우저에로드해야합니다.레이아웃의 머리 부분에 조건 스크립트 배치하기

이 작업을 수행하려면 Bootstrap 클래스에서 다음을 수행해야합니다.

$this->_view->headScript()->appendFile ('//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js', 'text/javascript', array('conditional' => 'lt IE 9')); 
$this->_view->headScript()->appendFile ('//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js', 'text/javascript', array('conditional' => 'lt IE 9')); 
$this->_view->headScript()->appendFile ($this->_view->baseUrl ('/assets/js/scripts.min.js?ver=1.0.0')); 

이것은 작동하며 레이아웃에서 다음 출력을 얻습니다.

<!--[if lt IE 9]> <script type="text/javascript" src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><![endif]--> 
<!--[if lt IE 9]> <script type="text/javascript" src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script><![endif]--> 
<script type="text/javascript" src="http://om.localhost.com/assets/js/scripts.min.js?ver=1.0.0"></script> 

위의 출력은 문제가 없습니다. 하지만 레이아웃의 머리 부분에 조건부 스크립트를 넣고 몸체 끝에는 나머지 스크립트를 넣는 것이 좋습니다.

ZF1에서이를 수행 할 수있는 방법이 있습니까?

P. 자리 표시자를 사용하려했지만 작동하지 않았습니다. 레이아웃에 이러한 스크립트를 하드 코딩하지 않기를 바랍니다.

도움 주셔서 감사합니다.

답변

0

머리 부분에 코드와 마찬가지로 headScript() 메서드를 사용할 수 있습니다.

$this->view->InlineScript()->appendFile($this->view->baseUrl() .'/js/myfile.js'); 

및 레이아웃의 끝 부분에 추가합니다 : 신체의 끝 부분에
, 당신은이 같은 InlineScript() 방법을 사용할 수 있습니다

<?php 
    echo $this->InlineScript(); 
?> 

부트 스트랩에 스크립트를 추가하려면, 당신은 할 수있다 이 같은 somehing :

protected function _initView() 
{ 
    $options = $this->getOptions(); 
    if (isset($options['resources']['view'])){ 
     $view = new Zend_View($options['resources']['view']); 
    } 
    else{ 
     $view = new Zend_View; 
    } 
    $view->InlineScript()->appendFile(...); 
} 
+0

감사. 그러나 이것은 모든 레이아웃에서이 코드를 하드 코딩해야한다는 것을 의미합니다. 부트 스트랩 클래스에서 설정할 수있는 레이아웃을 찾고 있습니다. 그런 식으로 변경해야한다면 부트 스트랩 클래스에서 메소드를 변경해야합니다. –