Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Einsatz eigener Extbase Controller Views

Einsatz eigener Extbase Controller Views

Vortrag zum Meetup der TYPO3 User Group Dresden

move:elevator

January 17, 2017
Tweet

More Decks by move:elevator

Other Decks in Programming

Transcript

  1. 1. MVC-Pattern 2. Status Quo 3. Fluid Standard View 4.

    Beispiel 5. Weiterführende Informationen Agenda
  2. Status Quo - Auslagerung der Logik in Controller oder in

    vom Controller ausgehende Objekte - meistens Abbruch durch die() oder exit
  3. FluidTemplateView /**
 * @package JanMaennig\ExtbaseViewExample\Controller
 */
 class RecordController extends ActionController


    {
 public function listAction()
 {
 $records = $this->recordRepository->findAll();
 $this->view->assign('records', $records);
 }
 
 /**
 * @param \JanMaennig\ExtbaseViewExample\Domain\Model\Record $record
 */
 public function singleAction(Record $record)
 {
 $this->view->assign('record', $record);
 }
 } Controller (Auszug)
  4. FluidTemplateView <div class="container">
 <div class="row">
 <div class="col-xs-11">
 <h1>
 {record.title}
 </h1>


    </div>
 <div class="cols-xc-1">
 <f:link.action 
 action="single"
 controller="RecordPdf"
 arguments="{record: '{record}'}"
 additionalParams="{type:1234}">
 <span class="glyphicon glyphicon-download"></span>
 </f:link.action>
 </div>
 </div>
 <div class="row">
 <div class="col-xs-12">
 <f:image 
 src="{record.images.0.uid}"
 Template (Auszug)
  5. Nutzung eigener Views pdfView = PAGE
 pdfView {
 typeNum =

    1234
 config {
 admPanel = 0
 debug = 0
 }
 
 10 < tt_content.list.20.extbaseviewexample_examplerecords
 } Einbindung des Plugins in eigenen Pagetype
  6. Beispiel PDF-Druck der Detailansicht <?php
 
 namespace JanMaennig\ExtbaseViewExample\Controller;
 
 use

    JanMaennig\ExtbaseViewExample\View\PdfView;
 
 /**
 * @package JanMaennig\ExtbaseViewExample\Controller
 */
 class RecordPdfController extends RecordController
 {
 protected $defaultViewObjectName = PdfView::class;
 } PdfController, zur Änderung des „DefaultViewObjects“
  7. Beispiel PDF-Druck der Detailansicht <?php
 
 namespace JanMaennig\ExtbaseViewExample\View;
 
 use

    TYPO3\CMS\Fluid\View\TemplateView;
 
 class PdfView extends TemplateView
 {
 /**
 * @return void
 */
 public function render()
 {
 header("Content-type:application/pdf");
 $content = parent::render();
 $mpdf = new \mPDF();
 $mpdf->WriteHTML($content);
 $mpdf->Output('test.pdf', 'D');
 
 return;
 }
 } PdfView abgeleitet vom TemplateView
  8. PDF

  9. Weiterführende Informationen Vorteile - Klare Trennung zwischen Ausgabelogik und Controller

    - kein „exit“ oder anderweitiger Abbruch der Logik im Controller notwendig - Einhaltung des Slim Controller Prinzips Nachteile - Weiterer Controller notwendig - zum Teil TypoScript (Pagetype) notwendig
  10. Nutzungsmöglichkeiten - PDF-Download - Excel-Export - Verwendung anderer Template-Engines -

    Bereitstellung von APIs - AJAX-Calls Weiterführende Informationen