ich so etwas wie diese verwenden Informationen mit Bootstrap meiner Layouts zu übergeben.
Dieses Beispiel gilt für eine Anwendung, die auf verschiedenen Domänen ausgeführt wird, also unterschiedliche Layouts. (und hat eine separate Version für MSIE). Jede Domain als separate application.ini
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
protected function _initAutoload() {
return new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH
));
}
// <snip> more _initMethods: Loggers, ACLs, ViewHelpers, etc. </snip>
/**
* Setup dynamic layout plugin
*
* @return Zend_Controller_Plugin_Broker
*/
protected function _initFrontControllerLayoutPlugin() {
// Ensure the front controller is initialized
$this->bootstrap('FrontController');
$front = $this->getResource('FrontController');
$this->bootstrap('layout');
$layout = $this->getResource('layout');
// Set our Front Controller Plugin
// !!!! right here I pass values to the layout
// !!!! example layoutName, but you could pass anything you want...
$plugin = new Plugin_DynamicLayout($layout, $this->getOption('layoutName'));
return $front->registerPlugin($plugin);
}
}
Das Layout Handler:
<?php
class Plugin_DynamicLayout extends Zend_Controller_Plugin_Abstract {
private $layoutName;
public function __construct(Zend_Layout $layout, $layoutName) {
$this->layout = $layout;
$this->layoutName = $layoutName;
}
public function preDispatch(Zend_Controller_Request_Abstract $request) {
$layoutName = $this->layoutName;
if (false !== strpos($request->getHeader('User-Agent'), 'MSIE')) {
$layoutName = $layoutName . '-ie';
}
$this->layout->setLayout($layoutName);
}
}
Die application.ini:
[production]
layoutName = "Some_File_Name"
nicht wir alle nur lieben MSIE – Stann