Hallo allerseits, ich sitze an einer Erweiterung bei dem die Typo3 Kategorien (sys_category) verwendet werden. Im Backend funktioniert alles prima. Allerding möchte ich auch, dass eine Kategorie in einem Frontend Plugin vom Besucher auswählbar ist. Konkret geht es um eine Vereinsliste.
Model und Repository für die Klasse „Category“ habe ich angelegt, diese sind leer und extended einfach nur \TYPO3\CMS\Extbase\Domain\Model\Category und \TYPO3\CMS\Extbase\Domain\Repository\CategoryRepository. Die categoryRepository injecte ich im Controller. Weitere Dateien: [ext_tables.php] \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable( 'Clubs', 'tx_clubs_domain_model_club' ); ########################################## [setup.typoscript, Auszug] plugin.tx_clubs_club { persistence { storagePid = {$plugin.tx_clubs_club.persistence.storagePid} classes { WXS\Clubs\Model\Category { mapping { recordType = 0 tableName = sys_category } } } } } ########################################## [ext_typoscript_setup.txt] config.tx_extbase { persistence { classes { WXS\Clubs\Domain\Model\Category { mapping { tableName = sys_category } } } } objects { TYPO3\CMS\Extbase\Domain\Model\Category.className = WXS\Clubs\Domain\Model\Category } } ########################################## [Vereins-Model (Club), Auszug] /** * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\WXS\Clubs\Domain\Model\Category> */ protected $categories; function __construct() { $this->categories = new ObjectStorage(); } /** * @param \WXS\Clubs\Domain\Model\Category $category * @return void */ public function addCategory(\WXS\Clubs\Domain\Model\Category $category) { $this->categories->attach($category); } /** * @param \WXS\Clubs\Domain\Model\Category $categoryToRemove The Category to be removed * @return void */ public function removeCategory(\WXS\Clubs\Domain\Model\Category $categoryToRemove) { $this->categories->detach($categoryToRemove); } /** * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\WXS\Clubs\Domain\Model\Category> $categories */ public function getCategories() { return $this->categories; } /** * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\WXS\Clubs\Domain\Model\Category> $categories * @return void */ public function setCategories(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $categories){ $this->categories = $categories; } ########################################## Ich lese die verfügbaren Kategorien aus und weise sie den Options einer f:form.select zu: <f:form.select class="form-control" options="{categoryOptions}" property="categories" id="district" optionValueField="uid" optionLabelField="title" prependOptionValue="" prependOptionLabel="Bitte wählen"> </f:form.select> Soweit so gut, die Liste erscheint auch korrekt und man kann die gewünschte Kategorie auswählen. Wohlgemerkt, es soll nur eine Kategorie ausgesucht werden, deshalb das Select Element ohne „multiple“. Im Validator versuche ich nun via $value->getCategories()->rewind()->current() auf das Feld zuzugreifen um es zu validieren. Das funktioniert allerdings nicht, der Wert ist einfach NULL. Also habe ich ein var_dump() auf getCategories() losgelassen und erhalte folgende Meldung: ########################################## object(TYPO3\CMS\Extbase\Persistence\ObjectStorage)#1175 (6) { ["warning":"TYPO3\CMS\Extbase\Persistence\ObjectStorage":private]=> string(228) "You should never see this warning. If you do, you probably used PHP array functions like current() on the TYPO3\CMS\Extbase\Persistence\ObjectStorage. To retrieve the first result, you can use the rewind() and current() methods." ["storage":protected]=> array(0) { } ["isModified":protected]=> bool(false) ["addedObjectsPositions":protected]=> array(0) { } ["removedObjectsPositions":protected]=> array(0) { } ["positionCounter":protected]=> int(0) } ########################################## Wenn ich in eine initialize Methode einen vardump mache sehe ich, dass „categories“ ein String mit der korrekten UID der Kategorie ist. Jetzt bin ich überfragt. Was muss ich machen, damit ich auf die Werte des Feldes zugreifen kann. Fehlt da ein Type Converter? Ich bin für jede Hilfe dankbar! :) Cheers, Matthew
_______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german