Hallo Zusammen
Ich schreibe einen Validator, welcher überprüft, ob ein ähnliches Objekt bereits existiert. Meine Objekte haben Referenzen auf Kategorien (Category-Objekt). Diese können als parentCategory wiederum eine Refernez auf eine andere Kategorie besitzen. Um nun von einer gegebenen Category die RootCategory herauszufinden, loope ich durch die Hirarchie, bis keine parentCategory mehr definiert ist.
/**
* Returns the root category
*
* @return Tx_MyExt_Domain_Model_EntryCategory $rootCategory
*/
public function getRootCategory() {
$rootCategory = $this;
while($rootCategory->getParentCategory()) {
$rootCategory = $rootCategory->getParentCategory();
}
return $rootCategory;
}
Ich führe '$entry->getCategory()->getRootCategory();' auch in einem Controller aus, und dort funktioniert es. Im Validator scheitert gleiches mit der Fehlermeldung:
PHP Catchable Fatal Error: Argument 1 passed to Tx_MyExt_Domain_Repository_EntryRepository::findByProperties() must be an instance of Tx_MyExt_Domain_Model_EntryCategory, instance of Tx_Extbase_Persistence_LazyLoadingProxy given, called in public_html/typo3conf/ext/myext/Classes/Validation/Validator/EntryExistValidator.php on line 55 and defined in public_html/typo3conf/ext/myext/Classes/Domain/Repository/EntryRepository.php line 49
Meines Erachtens sollte Extbase automatisch LazyLoading Objekte instanziieren, wenn sie angefordert werden.
Mein Validator:
/**
* is a non-existing entry?
* returns false when name, street and postcode combination exist
*
* @param $entry
*/
public function isValid($entry) {
$category = $entry->getCategory()->getRootCategory();
$entryRepository = t3lib_div::makeInstance('Tx_MyExt_Domain_Repository_EntryRepository');
$entries = $entryRepository->findByProperties($category,$entry->getName(), $entry->getStreet(), '', $entry->getPostCode(), '',$checkParentAndChildCat);
if(count($entries)!=0) {
$this->addError('Entry already exist', 80002001);
return false;
} else {
return true;
}
}
* 'myext' wird anstelle unserer Extension verwendet
Hat jemand von euch schon mal mit einem ähnlichen Problem gekämpft und dabei eine Lösung gefunden?