Как добавить ссылки на дополнительные стили, JavaScript файлы в Zend Framework

в разделе Программирование | Метки: Zend Framework, PHP, JavaScript

Иногда необходимо бывает при выводе страницы также подгрузить некоторые JavaScript или CSS файлы, например если хочется вывести графики с помощью Yahoo UI, для этого нужно подгрузить несколько файлов.

<script type="text/javascript" src="/js/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script> 
<script type="text/javascript" src="/js/yui/build/element/element-min.js"></script> 
<script type="text/javascript" src="/js/yui/build/datasource/datasource-min.js"></script> 
<script type="text/javascript" src="/js/yui//build/json/json-min.js"></script> 
<script type="text/javascript" src="/js/yui/build/swf/swf-min.js"></script> 
<script type="text/javascript" src="/js/yui/build/connection/connection-min.js"></script> 
<script type="text/javascript" src="/js/yui/build/charts/charts-min.js"></script>

Разумеется на остальных страницах все это хозяйство никому не нужно, поэтому как правило требуется вывести это в определенном контроллере и в определенном Action. Для того чтобы это все работало необходимо использовать Zend Layout.

В index.php у меня это обычно выглядит вот так:


<?php
require_once('../application/bootstrap.php');
$front Zend_Controller_Front::getInstance();
$front->setControllerDirectory('../application/controllers');
$front->throwExceptions($config->error->settings->show_exceptions);

$view = new Zend_View();
$view->setEncoding('UTF-8');
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
Zend_Layout::startMvc(
    array(
        
'layoutPath' => '../application/layouts',
        
'layout' => 'default'
    
)
);
$front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array('action' => 'error')));
$front->dispatch();
?>

В самом Layout, необходимо добавить такой код:

<?php
<head>
    <?
php
        
echo $this->headScript();
        echo 
$this->headLink();
        echo 
$this->headStyle();
    
?>
</head>
?>

Теперь в контроллере все это выводится так:


<?php

class TestController extends Zend_Controller_Action
{
    public function 
testAction()
    {
        
$this->view->headScript()->appendFile('/js/yui/build/yahoo-dom-event/yahoo-dom-event.js''text/javascript')
                                 ->
appendFile('/js/yui/build/element/element-min.js''text/javascript')
                                 ->
appendFile('/js/yui/build/datasource/datasource-min.js''text/javascript')
                                 ->
appendFile('/js/yui//build/json/json-min.js''text/javascript')
                                 ->
appendFile('/js/yui/build/swf/swf-min.js''text/javascript')
                                 ->
appendFile('/js/yui/build/connection/connection-min.js''text/javascript')
                                 ->
appendFile('/js/yui/build/charts/charts-min.js''text/javascript');
    }
}
?>

Profit!!!