Как добавить ссылки на дополнительные стили, JavaScript файлы в Zend Framework
Размещено 2010-03-21
в разделе Программирование | Метки:
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!!!