Einsatz eigener Extbase Controller Views

Einsatz eigener Extbase Controller Views

Vortrag zum Meetup der TYPO3 User Group Dresden

1e3f36cacc64d0a924cdbb3fdc59e8af?s=128

move:elevator

January 17, 2017
Tweet

Transcript

  1. GROUP

  2. Eigene Extbase Controller Views

  3. Jan Männig, Team Lead CMS-Development
 move:elevator

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

    Beispiel 5. Weiterführende Informationen Agenda
  5. MVC-Pattern

  6. MVC-Pattern VIEW CONTROLLER MODEL

  7. Status Quo

  8. „Controller, die eierlegende Wollmilchsau“

  9. Status Quo - Auslagerung der Logik in Controller oder in

    vom Controller ausgehende Objekte - meistens Abbruch durch die() oder exit
  10. „Schuster, bleib bei deinem Leisten.“

  11. Der View …

  12. 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)
  13. 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)
  14. FluidTemplateView

  15. „Selbst ist der Developer“

  16. Vorab etwas TypoScript

  17. 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
  18. Beispiel

  19. 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“
  20. 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
  21. PDF

  22. Weiterführende Informationen

  23. 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
  24. Nutzungsmöglichkeiten - PDF-Download - Excel-Export - Verwendung anderer Template-Engines -

    Bereitstellung von APIs - AJAX-Calls Weiterführende Informationen
  25. Weitere Links - https://usetypo3.com/json-view.html - https://github.com/janmaennig/extbase-view-example/ Weitere Informationen

  26. Vielen Dank!

  27. Quellen Bilder / Fotos