Revision: 37045
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 3, 2010 02:57 by nikefido
Initial Code
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initLayoutHelper() { $this->bootstrap('frontController'); $layout = Zend_Controller_Action_HelperBroker::addHelper( new AppName_Controller_Action_Helper_LayoutLoader()); $doctypeHelper = new Zend_View_Helper_Doctype(); $doctypeHelper->doctype('HTML5'); } protected function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $bodyClass = new AppName_Helper_BodyClass(); $view->registerHelper($bodyClass, 'BodyClass'); $footScript = new AppName_Helper_FootScript(); $view->registerHelper($footScript, 'FootScript'); $baseUrl = $this->getOption('baseUrl'); $view->baseUrl = $baseUrl; $layout->baseUrl = $baseUrl; } protected function _initErrorHandler() { $front = Zend_Controller_Front::getInstance(); $front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array( 'module' => 'error', 'controller' => 'error', 'action' => 'error' ))); } protected function _initRegistry() { Zend_Registry::set('facebook', $this->getOption('facebook')); $googleApi = $this->getOption('google'); Zend_Registry::set('googleApi', $googleApi['api']); } } //related files: class AppName_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract { public function preDispatch() { $module = $this->getRequest()->getModuleName(); if ($module == 'app') { $this->getActionController() ->getHelper('layout') ->setLayout('app'); } } } class AppName_Helper_FootScript extends Zend_View_Helper_HeadScript { protected $_regKey = 'Zend_View_Helper_FootScript'; //Need different namespace than standard _HeadScript view helper public function footScript() { return parent::headScript(); } } class AppName_Helper_BodyClass extends Zend_View_Helper_Placeholder_Container_Standalone { private $_classes = array(); public function __construct($classes = null) { if(is_array($classes)) { $this->addClass($classes); } } public function addClass($class) { if(is_array($class)) { foreach($class as $c) { if(is_string($c)) { $this->addClass($c); //recursion } else { throw new Zend_Exception('Class must be a string - is type: '.gettype($c)); } } return $this; } if(is_string($class)) { $this->_classes[] = $class; return $this; } else { throw new Zend_Exception('Class must be a string - is type: '.gettype($class)); } return $this; } public function removeClass($class) { $key = array_search($class, $this->_classes); if($key !== false) { unset($this->_classes[$key]); } return $this; } public function bodyClass() { return $this; } public function toString() { return implode(' ', $this->_classes); } } ?> <!-- HERE IS A SAMPLE LAYOUT FILE USING ABOVE VIEW HELPERS --> <?php echo $this->doctype() ?> <html> <head> <meta charset="utf-8"> <!-- www.phpied.com/conditional-comments-block-downloads/ --> <!--[if IE]><![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <?php echo $this->headTitle() ?> <meta name="description" content=""> <meta name="author" content=""> <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;"> <?php echo $this->headMeta() ?> <link rel="shortcut icon" href="<?php echo $this->layout()->baseUrl; ?>/favicon.png"> <link rel="apple-touch-icon" href="<?php echo $this->layout()->baseUrl; ?>/apple-touch-icon.png"> <link rel="stylesheet" href="<?php echo $this->layout()->baseUrl; ?>/css/app/imports.css"> <?php echo $this->headLink() ?> <?php echo $this->headStyle() ?> <?php echo $this->headScript() ?> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <base href="/" /> </head> <body class="<?php echo $this->bodyClass(); ?>"> <div id="fb-root"></div> <?php echo $this->layout()->content ?> <!-- Scripts --> <script src="<?php echo $this->layout()->baseUrl; ?>/js/cssbrowsers.js"></script> <!-- Grab Google CDN's jQuery. fall back to local if necessary --> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <!-- <script>!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"></script>')</script> --> <?php echo $this->footScript() ?> <script src="<?php echo $this->layout()->baseUrl; ?>/js/plugins.js"></script> <script src="<?php echo $this->layout()->baseUrl; ?>/js/script.js"></script> <script> var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_trackPageview']]; (function(d, t) { var g = d.createElement(t), s = d.getElementsByTagName(t)[0]; g.async = true; g.src = '//www.google-analytics.com/ga.js'; s.parentNode.insertBefore(g, s); })(document, 'script'); </script> </body> </html>
Initial URL
Initial Description
Sample Zend bootstrap and supporting files 1) Sets custom layout depending on module used 2) Adds view helpers - footscript for adding scripts to footer and custom bodyClass helper 3) Sets baseUrl option for view and layout 4) Sets error handler to a specific module 5) Sets custom .ini options into registry
Initial Title
Sample Zend boot strap file - layout, views, registry, error handling
Initial Tags
Initial Language
PHP