Extbase Extensions - Snippets und Glossar: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 135: Zeile 135:
 
Im Repository
 
Im Repository
 
  protected $defaultOrderings = array ('name' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING);
 
  protected $defaultOrderings = array ('name' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING);
 +
 +
== Debugging ==
 +
=== Debugging im Controller ===
 +
==== Beispiel ====
 +
<pre>
 +
t3lib_utility_Debug::debug($var, 'Debug: ' . __FILE__ . ' in Line: ' . __LINE__);
 +
 +
# namespaces
 +
\TYPO3\CMS\Core\Utility\DebugUtility::debug($var, 'Debug: ' . __FILE__ . ' in Line: ' . __LINE__);
 +
</pre>
 +
==== Beispiel ====
 +
<pre>
 +
Tx_Extbase_Utility_Debugger::var_dump($var);
 +
 +
# namespaces
 +
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($var);
 +
</pre>
 +
==== Beispiel ====
 +
print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $this );

Version vom 11. Dezember 2014, 11:12 Uhr

Glossar

Extbase - ist ein MVC Framework für die Extension entwicklung in TYPO3

FLOW3 - ist ein PHP-Framework, welches TYPO3 Version 5 verwenden wird.

Fluid - Template Engine ähnlich wie Smarty ab Version 5


Snippets Links

http://typo3.org/documentation/snippets/

TypoScript Konfiguration im Controller nutzen

TypoScript

plugin.tx_some-extname.settings {
    myXsetting = XXXX
}

PHP

$valX = $this->settings['myXsetting'];

E-Mails mit Extbase

http://t3-developer.com/extbase-fluid/extensions-erweitern/e-mail-versand-aus-extensions/mailversand/

http://www.benny-vs-web.de/typo3/extbase-fluid-zum-rendern-von-e-mail-templates-verwenden/

Actions

Auf Daten andererer Modelle / Repositorys im Controller zugreifen. (verknüpfte Daten auflisten)

Im Controller steht wegen der strikten Trennung der Modelle erstmal das Repository (Die Datenstruktur) des Models zur Verfügung. Die verknüpften Daten (hier im Beispiels die Genres, gibt der View zwar über die Verknüpfung aus, das sind aber nur die mit dem jeweiligen Datensatz verknüpften Daten. Z.B. die Genres einer Band. Will man z.B. alle Genres im Listview der Bands ausgeben braucht man ein Repository der Genres und muß den Genre Controller in den Band Controller injecten. Dann kann man auf alle Funktionen des Genre Controllers auch aus dem Band Controller zugreifen. So bleibt auch alles sauber getrennt.

  • eigenes Repository für verknüpfte Daten erstellen (z.B. Genre)
	/**
	 * genreRepository
	 *
	 * @var \Geobit\Gbbandpass\Domain\Repository\GenreRepository
	 * @inject
	 */
	protected $genreRepository = NULL;
  • in gewünschten Controller (Hauptcontroller) injecten dazu innerhalb der Klasse folgendes hinzufügen:

You can inject every repository of every installed extbase extension. Just add the dependency injection code to your controller. Depending on your TYPO3 version ist either:

TYPO3 >= 6.0:

/**
 * @var \Vendor\Extension\Domain\Repository\SomeRepository
 * @inject
 */
protected $someRepository;
'''TYPO3 = 4.7:'''
<pre>
/**
 * @var Tx_MyExtension_Domain_Repository_SomeRepository
 * @inject
 */
 protected $someRepository;

TYPO3 < 4.7

/**
 * @var Tx_MyExtension_Domain_Repository_SomeRepository
 */
 protected $someRepository;

/**
 * Inject SomeRepository
 * @param Tx_MyExtension_Domain_Repository_SomeRepository $someRepository
 * @return void
 */
public function injectSomeRepository(Tx_MyExtension_Domain_Repository_SomeRepository $someRepository) {
  $this->someRepository = $someRepository;
}

Jetzt kann man $this->someRepository mit all seinen Methoden auch in diesem Controller nutzen.

Hinweis: Nach Änderung System Cache löschen !

Controller-Action Kombinationen für Frontend-Plugins definieren

http://docs.typo3.org/typo3cms/ExtbaseFluidBook/b-ExtbaseReference/Index.html

In ext_localconf.php sind erlaubte Actions hinterlegt. Der erste Eintrag ist die Default-Action.

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'Geobit.' . $_EXTKEY,
	'Mailformtest',
	array(
		'Mailform' => 'list, show, new, create',
		
	),
	// non-cacheable actions
	array(
		'Mailform' => 'create, ',
		
	)
);

Zu diesem Beispiel gehört der Controller unter

Classes/Controller/MailformController.php

Diverse

Actions anlegen

Im Controller:

/**
 * action list
 *
 * @return void
 */
public function listAction() {
	$myextname = $this->myextRepository->findAll();
	$this->view->assign('myextname', $myextname);
}

addFlashMessage

Im Controller

 $this->addFlashMessage('This is a simple success message');
 $this->addFlashMessage('The message body', 'Message title', \TYPO3\CMS\Core\Messaging\AbstractMessage::OK, TRUE);
 $this->addFlashMessage('<strong>HTML-Messageplement</strong>', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);

Default Sortierung in Extbase

Quelle: http://t3n.de/magazin/zehn-tipps-tricks-extbase-fluid-227639/2/ (11/2014)

Default-Sortierung im Repository

Nicht unbedingt unbekannt, aber weitestgehend ungenutzt ist ein Feature, welches in Extbase 1.3 hinzugekommen ist: Im Repository besteht die Möglichkeit, das Ergebnis nach bestimmten Feldern aufsteigend oder absteigend zu sortieren. Dies wird beispielsweise mittels „

$query->setOrderings(array('name' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING));

erledigt.

Um dies nicht für jede einzelne Repository-Funktion einstellen zu müssen, gibt es die Eigenschaft defaultOrderings:

Im Repository

protected $defaultOrderings = array ('name' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING);

Debugging

Debugging im Controller

Beispiel

t3lib_utility_Debug::debug($var, 'Debug: ' . __FILE__ . ' in Line: ' . __LINE__);
 
# namespaces
\TYPO3\CMS\Core\Utility\DebugUtility::debug($var, 'Debug: ' . __FILE__ . ' in Line: ' . __LINE__);

Beispiel

Tx_Extbase_Utility_Debugger::var_dump($var);
 
# namespaces
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($var);

Beispiel

print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $this );