[TYPO3-german] sys_category

Jan Kornblum jan.kornblum at gmx.de
Tue Oct 15 23:21:50 CEST 2013


Hallo Gruppe,

also die Konfiguration für die Grundfunktionalität ist ja wirklich 
recht einfach. Hier das Vorgehen mithilfe des Extension Builder:

1. Zu kategorisierendes Model erzeugen
2. Eine 1:n Relation "categories" hinzufügen mit "Relation to external 
class" = \TYPO3\CMS\Extbase\Domain\Model\Category
3. In der ext_tables.php via 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable() 
das "categories" Feld des Models als "kategorisierbar" konfigurieren 
(Im Prinzip muss das Feld "categories" vorher gar nicht angelegt werden 
(TCA, ext_tables.sql), denn wenn nicht vorhanden, erledigt die Methode 
makeCategorizable() das alles selbst)
4. Das TCA des Models anpassen und dort die vom Extension Builder 
erstellte "categories" Konfiguration löschen (da der Extension Builder 
1:n als IRRE konfiguriert und damit die von makeCategorizable() 
erzeugte Ausgabe in den FE Forms überschieben wird).
5. Und schon kann aus dem Model-Objekt auf die zugewiesenen 
Category-Objekte zugreifen

Ohne Extension Builder muss man im Prinzip nur darauf achten, dass das 
Model die zu kategorisierende Property "categories" besitzt (optional 
in ext_tables.sql als int(11)...), das Feld in der ext_tables.php 
"kategorisierbar" gemacht wird (makeCategorizable(), s.o.) und die 
Getter und Setter richtig definiert werden:

/**
 * Kategorien
 *
 * @var 
\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\Category>
 */
protected $categories;

/**
 * Adds a Category
 *
 * @param \TYPO3\CMS\Extbase\Domain\Model\Category $category
 * @return void
 */
public function addCategory(\TYPO3\CMS\Extbase\Domain\Model\Category 
$category) {
	$this->categories->attach($category);
}

/**
 * Removes a Category
 *
 * @param \TYPO3\CMS\Extbase\Domain\Model\Category $categoryToRemove 
The Category to be removed
 * @return void
 */
public function removeCategory(\TYPO3\CMS\Extbase\Domain\Model\Category 
$categoryToRemove) {
	$this->categories->detach($categoryToRemove);
}

/**
 * Returns the categories
 *
 * @return 
\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\Category> 
$categories
 */
public function getCategories() {
	return $this->categories;
}

/**
 * Sets the categories
 *
 * @param 
\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\Category> 
$categories
 * @return void
 */
public function 
setCategories(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $categories) 
{
	$this->categories = $categories;
}

Vielleicht hilft obiges ja dem ein oder anderen... Falls logische 
Fehler freue ich mich über Feedback. Vielleicht kann man ja die 
Wiki-Seite ergänzen?

Schön, dass die sys_categories Einzug in den TYPO3 Core erhalten haben! 
Stehe zwar selbst noch am Anfang damit, aber man darf ja auch mal 
"Danke sagen" ;)

Grüße, Jan




More information about the TYPO3-german mailing list