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

Einsatz eigener Extbase Controller Views

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Einsatz eigener Extbase Controller Views

Vortrag zum Meetup der TYPO3 User Group Dresden

Avatar for move:elevator

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