Zum Inhalt springen

Vidi: No TCA entry found for field "metadata"

Erstellt am 13. Dezember 2014 · 1 Antwort · letzte Antwort am 16. Dezember 2014

Tags: TCA, Frage

ChrisMakrutzki ·

Hallo,

ich programmiere an einer Erweiterung, die hochgeladene Bilder aus der Media-Extension im Frontend darstellt. Die Bilder sollen nach Systemkategorien und Suchbegriff filterbar sein. Dafür habe ich mir mit dem Extension Builder eine Erweiterung konfiguriert und einen ActionController angelegt:

class ItemsController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

	/**
	 * action list
	 *
	 * @return void
	 */
	public function listAction() {
		// Get HTTP parameters
		$httpParameters = $this->request->getArguments();
		
		// Add CSS resource
		$this->response->addAdditionalHeaderData('<link rel="stylesheet" href="' . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->request->getControllerExtensionKey()) . 'Resources/Public/css/style.css" />');
		
		// Get the Content Repository for sys_category.
		$categoryRepository = \TYPO3\CMS\Vidi\Domain\Repository\ContentRepositoryFactory::getInstance('sys_category');
		
		$categories = $categoryRepository->findAll();
		$this->view->assign('categories', $categories);
		
		// Get the Content Repository for sys_file.
		$fileRepository = \TYPO3\CMS\Vidi\Domain\Repository\ContentRepositoryFactory::getInstance('sys_file');

		$matcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Vidi\Persistence\Matcher', array(), 'sys_file');

		$matcher->equals('storage', '2');
		
		if( isset($httpParameters['categoryUid']) && $httpParameters['categoryUid'] != "") {
			$matcher->equals('metadata.categories', $httpParameters['categoryUid']); 
		}
		
		if( isset($httpParameters['term']) && $httpParameters['term'] != "" ) {
			$matcher->likes('metadata.title', $httpParameters['term']); 
		}

		$items = $fileRepository->findBy($matcher);
		
		$this->view->assign('items', $items);
	}

}

Das funktioniert soweit auch gut und ich kann mit der Zeile

matcher->equals('metadata.categories', $httpParameters['categoryUid']);

nach den in den Metadaten zugewiesen Kategorien filtern.

Mein Problem ist folgende Zeile:

$matcher->likes('metadata.title', $httpParameters['term']);

Sobald ich mit dem Matcher nach dem Titel in den Metadaten suche, bekomme ich eine Exception. #1385554481: Does the field really exist? No TCA entry found for field "metadata"

Hier nochmal der komplette Traceback:
Bild: img5.fotos-hochladen.net/…/typo3exceptionjx4ylrn63p.png

Bei der Programmierung habe ich mich an diesen Wikieintrag gehalten:
http://docs.typo3.org/typo3cms/extensions/vidi/
Mit wundert, dass metadata.categories funktioniert, aber metadata.title nicht. Übersehe ich noch was?

Vielen Dank!