ExtBase Cookbook #9 - How to change view-class for each controller and action using Typoscript
Today, I had the problem that I wanted to change the view class to be used with ExtBase ActionController depending on TypoScript settings. I need to produce CSV output for a generic plugin and want to change the behaviour of the view class depending on the concrete usage of the plugin. That's why it is not very useful for me to simply change the format of the output, which can be handled by extbase out of the box.
So what I did is using an abstract controller extending action controller as a base controller for all my plugin's controller. Then I copied the code of the resolveView() method into this controller and added some lines:
abstract class Tx_PtExtlist_Controller_AbstractController extends Tx_Extbase_MVC_Controller_ActionController { /** * Constructor for all plugin controllers * @author Michael Knoll <knoll@punkt.de> */ public function __construct() { parent::__construct(); } /** * Prepares a view for the current action and stores it in $this->view. * By default, this method tries to locate a view with a name matching * the current action. * * Configuration for view in TS: * * controller.<ControllerName>.<controllerActionName>.view = <viewClassName> * * @return void */ protected function resolveView() { // These lines have been added by Michael Knoll to make view configurable via TS $viewClassName = $this->settings['controller'] [$this->request->getControllerName()] [$this->request->getControllerActionName()]['view']; if ($viewClassName != '') { $view = $this->objectManager->getObject($viewClassName); } else { throw new Exception('View class does not exist! ' . $viewClassName); } } else { $view = $this->objectManager->getObject('Tx_Fluid_View_TemplateView'); } $controllerContext = $this->buildControllerContext(); $view->setControllerContext($controllerContext); // Template Path Override $extbaseFrameworkConfiguration = Tx_Extbase_Dispatcher::getExtbaseFrameworkConfiguration(); $view->setTemplateRootPath(t3lib_div::getFileAbsFileName( $extbaseFrameworkConfiguration['view']['templateRootPath'])); } $view->setLayoutRootPath(t3lib_div::getFileAbsFileName( $extbaseFrameworkConfiguration['view']['layoutRootPath'])); } $view->setPartialRootPath(t3lib_div::getFileAbsFileName( $extbaseFrameworkConfiguration['view']['partialRootPath'])); } if ($view->hasTemplate() === FALSE) { $viewObjectName = $this->resolveViewObjectName(); $viewObjectName = 'Tx_Extbase_MVC_View_EmptyView'; $view = $this->objectManager->getObject($viewObjectName); $view->setControllerContext($controllerContext); } $view->injectSettings($this->settings); } $view->initializeView(); $view->assign('settings', $this->settings); return $view; } }
Now I can use the following TS-Settings inside my Typoscript settings part of the extension to change the view for each controller and action seperately:
plugin.<extension_name>.settings.controller.<controller_name>.<action_name>.view = <view_class_name>
Some funny anecdote on this topic is the fact that when I first started to use MVC paradigma for Typo3 extension programming, I came in touch with pt_mvc from Fabrizio Branca. Now Fabrizio seems to be a real configuration fetishist and so everything was configurable in pt_mvc - even the view to be used for a controller and action. So I was wondering why none of this found its way into ExtBase yet and hope that some day soon I will find all the great features of pt_mvc in ExtBase.
Mexico #11 - Black&White
Here is a collection of black&white photos I recently made out of my Mexico photos. Mainly I wanted to test some papers and settings for my new Inkjet printer but then I realized that there are some fancy pictures among them which led to this series. I hope you like it.
Mexico #10
Since it had been a long time here is another post with some pictures from Mexico. Although I had written a text about our trip to Mazunte, I didn't have the opportunity to upload some pictures - so here they are. For me it's been one of the most beautiful places to stay all over Mexico - I hope, you enjoy the photos.
Taschachferner Panorama
Panorama Aufnahme vom Taschachferner entstanden am 10. Juli 2010. Das Bild zeigt eindrucksvoll die Auswirkung von hohen Temperaturen auf gefrorenes Wasser. In der Bildmitte sieht man die Überreste der Taschach-Eiswand, einst eine der mächtigsten Eiswände in den Ötztalern. Links im Hintergrund die Wildspitze mit ihrer Nordwand, die einmal abgesehen von den Felsen in Wandmitte noch ganz gut dastand. Rechts unten geht's weiter zum Taschachhaus.
Fachübungsleiter-Ausbildung Hochtouren
Die vergangenen 10 Tage verbrachte ich im Pitztal auf dem Taschachhaus und habe dort meine Ausbildung zum Fachübungsleiter Hochtouren beim DAV abgeschlossen. Die Ausbildung besteht (normalerweise) aus 3 Teilen: Grundkurs, Felsklettern und Eis.
Unseren Kurs (wir waren insgesamt 11 Aspiranten) leiteten Jörn Heller und Max Bolland. Die beiden haben in professioneller Art und Weise sowohl fachlich als auch pädagogisch durch den Kurs geführt. Von den Horrorgeschichten, die man hier und da über die Ausbildung zum FÜL Hochtouren hört, hat sich wenig bis gar nichts bewahrheitet. Lediglich die Tatsache, dass man für die 10 Tage etwas Kondition mitbringen sollte und das ein oder andere mal sehr früh aufstehen muss kann sicherlich nicht angezweifelt werden :-)
Der Kurs besteht aus einer Einführung in das Steigeisengehen - vorwiegend Vertikalzackentechnik, einigen Probe-Führungstouren, einer Theorieprüfung, Prüfung im Eisbruch und zwei abschließenden Prüfungstouren.
Als Übungstouren standen für uns 3 etwas schwerere Hochtouren rund um das Taschachhaus auf dem Programm. Dass dabei dank des warmen Wetters (bis zu 27 Grad auf der Hütte!!!) mehr und mehr Felstouren gemacht wurden, tat dem Kurs keinen Abbruch, ich hätte mir freilich ein paar mehr Unternehmungen im Eis gewünscht. Unsere Tourenziele waren zunächst die Überschreitung des Pitztaler Urkunds - eine ungeahnt schöne Felskletterei im 2. Grad, die Sexegerten-Nordwand mit Überschreitung vom Nord- zum Südgipfel sowie die Petersenspitze-Nordwand mit Überschreitung des Brochkogels.
Die Prüfung im Eisbruch bestand aus einem Eis-Parcours für Vertikalzackentechnik, der mich an die Grenzen meiner Steigeisen-Fähigkeiten brachte und einem senkrechten Vorstieg im Gletschereis. Im Anschluss daran wurde eine Theorieprüfung geschrieben, bei der ich vor allem - schändlicherweise - große Defizite im Bereich Erste Hilfe und Wetterkunde hatte... hier gelobe ich Besserung :-)
Die Führungstouren wurden aus den Erfahrungen der vorangegangenen Touren im Bereich Gratüberschreitungen gewählt. So stand einmal die Überschreitung der Bligg-Spitze vom Südgrat (eigentlich II, aber patschnass dank Nebel) und Ostgrat auf dem Programm. Des weiteren besuchten wir die Eiskastenspitze über Südostgrat (Stellen III, sonst II) und Abstieg über den Mittleren Eiskastenferner.
Alles in allem konnte ich auf dem Kurs noch einmal viel dazu lernen und im Gegensatz zum Felskurs viele wesentliche Tipps und Tricks einsammeln. Daneben habe ich gemerkt, wo meine Defizite liegen und an was ich in Zukunft arbeiten kann.
Im Übrigen war die Gruppe der absolute Hammer! Wer sich überzeugen will, findet weitere Bilder in der Kaktusteam Gallery. Weitere Bilder finden sich auf dem Blog von Markus (einem weiteren Teilnehmer des Kurses - Der Blog ist auch so sehr lesenswert!).






























































