Extbase - Flash Message: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 2: Zeile 2:
  
 
Siehe auch:
 
Siehe auch:
 +
Klassen ändern, FlashMessages im Backend,
 +
http://blog.sbtheke.de/web-development/typo3/typo3-extension-programmierung/extbase-flashmessages
  
http://blog.sbtheke.de/
+
== Übersicht ==
 
+
Werden meist im Controller eingesetzt.
  
 +
== Beispiele ==
 +
=== Einfache Beispiele ===
 +
<syntaxhighlight lang="php">
 +
$this->addFlashMessage(
 +
  'The message text.',
 +
  'The title',
 +
  \TYPO3\CMS\Core\Messaging\AbstractMessage::OK
 +
);
 +
</syntaxhighlight>
 +
oder
 +
<syntaxhighlight lang="php">
 +
//after class definition
 +
use TYPO3\CMS\Core\Messaging\AbstractMessage;
 +
...
 +
$this->addFlashMessage(
 +
  'The message text.',
 +
  'The title',
 +
  AbstractMessage::OK
 +
);
 +
</syntaxhighlight>
 +
oder ganz Ausführlich
 +
<syntaxhighlight lang="php">
 +
$this->controllerContext->getFlashMessageQueue()->enqueue(
 +
  $this->objectManager->get(
 +
    'TYPO3\\CMS\\Core\\Messaging\\FlashMessage',
 +
    'The message text.',
 +
    'The title',
 +
    \TYPO3\CMS\Core\Messaging\AbstractMessage::OK
 +
  )
 +
);
 +
</syntaxhighlight>
 
== Kurzübersicht aus t3-developer.com ==
 
== Kurzübersicht aus t3-developer.com ==
 
Hinweis: Namespace schreibweise verwenden  
 
Hinweis: Namespace schreibweise verwenden  

Version vom 26. Juni 2015, 16:29 Uhr

Flash Messages sind Systemnachrichten die man sowohl im Backend als auch im Frontend ausgeben kann.

Siehe auch: Klassen ändern, FlashMessages im Backend, http://blog.sbtheke.de/web-development/typo3/typo3-extension-programmierung/extbase-flashmessages

Übersicht

Werden meist im Controller eingesetzt.

Beispiele

Einfache Beispiele

$this->addFlashMessage(
  'The message text.',
  'The title',
  \TYPO3\CMS\Core\Messaging\AbstractMessage::OK
);

oder

//after class definition
use TYPO3\CMS\Core\Messaging\AbstractMessage;
...
$this->addFlashMessage(
  'The message text.',
  'The title',
  AbstractMessage::OK
);

oder ganz Ausführlich

$this->controllerContext->getFlashMessageQueue()->enqueue(
  $this->objectManager->get(
    'TYPO3\\CMS\\Core\\Messaging\\FlashMessage',
    'The message text.',
    'The title',
    \TYPO3\CMS\Core\Messaging\AbstractMessage::OK
  )
);

Kurzübersicht aus t3-developer.com

Hinweis: Namespace schreibweise verwenden

//so
 \TYPO3\CMS\Core\Messaging\AbstractMessage:: ... 
// NICHT wie unten
 t3lib_Flashmessage::

http://t3-developer.com/extbase-fluid/cheats-extbase/controller/flash-messages/ (2015-06)

Flash Message Container in Extbase und Fluid

Insgesamt stehen 5 verschiedene Message Klassen zur Verfügung die mit folgendem Code angesprochen werden:

 t3lib_Flashmessage::NOTICE
 t3lib_Flashmessage::INFO
 t3lib_Flashmessage::OK
 t3lib_Flashmessage::WARNING
 t3lib_Flashmessage::ERROR

Nutzt man FlashMessages im Backend, rendert Typo3 direkt die bekannten Kästen (siehe Abbildung). Im Frontend kann man die Klassen im eigenem Stylesheet ansprechen.

Optional kann inzwischen auch ein Titel für jede Nachricht vergeben werden. Im Controller sieht das ganze dann so aus:

//löscht die Standard Nachrichten aus der Messagequeue
$this->flashMessages->flush(); 

// eigene Message setzten, "NOTICE" setzt hier den grauen Ausgabekasten im BE
$this->flashMessageContainer->add('Message Text','Titel optional', t3lib_Flashmessage::NOTICE); 
$this->view->assign ...

Im View werden die FlashMessages dann durch

 <f:flashMessages />

aufgerufen. Dieser erzeugt standardmäßig eine unsortierte Liste mit <ul><li>

Mit dem Aufruf

 <f:flashMessages renderMode="div" />

werden die Messages (sofern mehrere in der Queue sind) mit divs gerendert.

Und im Frontend?

Wenn man die Message um die "t3lib_Flashmessage::NOTICE" ergänzt, erhalten die div's der Message eine entsprechende Klasse, zum Beispiel:

<div class="typo3-messages">
    <div class="typo3-message message-notice">
        <div class="message-header">Titel optional Text</div>
        <div class="message-body">Message Text</div>
    </div>
</div>

Anhand der div Class kann so ein individuelles Styling in Abhängigkeit der gewälten t3lib_Flashmessage erstellt werden.