[TYPO3-german] Extbase - Cannot redeclare class...

Thomas Nussbaumer typo3 at thomasnu.ch
Sat May 10 15:13:19 CEST 2014


Hi Johannes

Die Methoden findBy... sind magische Finder-Methoden. Wahrscheinlich 
wird hier versucht Objekte zu finden dessen Eigenschaft 
"SelectedCriteria" (dem Array) $this->settings entsprechen. Ändere den 
Namen der Funktion. Auch solltest du die Funktionen in der Art schreiben:
/**
  * Finds persons in alphabetical groups.
  *
  * @param string $firstLetter First letter of name
  * @return array List of persons
  */
public function findInAlphaGroup($firstLetter) {
	$query = $this->createQuery();
	$query->matching($query->like('name', $firstLetter . '%'));
	return $query->execute();
}
So werden die Parameter überprüft. Ich sehe nicht wie das Array 
$settings verwendet wird. Könnte der nächste Fehler sein.

Liebe Grüsse. Thomas

Am 10.05.2014 14:16, schrieb JCL - Johannes C. Laxander:
>
> Hallo Thomas,
>
> und schon bin ich wieder da... ;-)
>
> Fatal error: Cannot access empty property in /.../sc_cruise_plan/Classes/Controller/CruiseController.php on line 68
>
> Das ist aus deinem Vorschlag die Zeile:
>
> $this->view->assign('cruises',
> 	$this->$cruiseRepository->findBySelectedCriteria($this->settings));
>
> Hier nochmal der Code meiner Repository-Klasse (den Namen musste ich nach der von dir vorschlagenen Änderung von "Tx_ScCruisePlan_Repository_CruiseRepository" in "Tx_ScCruisePlan_Domain_Repository_CruiseRepository" andern):
>
> /**
>   * @package sc_cruise_plan
>   * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later
>   */
> class Tx_ScCruisePlan_Domain_Repository_CruiseRepository extends
> Tx_Extbase_Persistence_Repository {
>
> 	public function findBySelectedCriteria($settings) {
>
> 		$query = $this->createQuery();
> 		$constraints = array();
> 		
> 		$constraints[] = $query->greaterThan('cruiseStartDate', time());
> 		
> 		...hier werden noch weitere Bedingungen in $constraints ergänzt...
>
> 		$query->matching($query->logicalAnd($constraints));
> 		return $query->execute();
> 	}
> }
>
> Hast noch so eine geniale Idee wie zuvor??? Schon mal ein dickes Danke für deine Bemühungen :-)
>
> Gruß, Johannes.
>
>> Hallo Thomas,
>>
>> danke das scheint geholfen zu haben, zumindest habe ich jetzt
>> einen andern / neuen Fehler ;-) Ich melde mich ggf. wieder hier...
>>
>> Gruß, Johannes.
>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: typo3-german-bounces at lists.typo3.org
>>> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Thomashabe ich folgenden Code
>>> Nussbaumer
>>> Gesendet: Samstag, 10. Mai 2014 11:59
>>> An: typo3-german at lists.typo3.org
>>> Betreff: Re: [TYPO3-german] Extbase - Cannot redeclare class...
>>>
>>> Hallo Johannes
>>>
>>> Verwende im Controller Dependency Injection:
>>> /**
>>>     * @var Tx_ScCruisePlan_Domain_Repository_CruiseRepository
>>>     * @inject
>>>     */
>>> protected $cruiseRepository;
>>>
>>> public function listAction() {
>>> 	$this->view->assign('cruises',
>>> $this->$cruiseRepository->findBySelectedCriteria($this->settings));
>>> }
>>>
>>> Liebe Grüsse. Thomas
>>>
>>> Am 09.05.2014 15:55, schrieb JCL - Johannes C. Laxander:
>>>> Hallo,
>>>>
>>>> ich schreibe gerade an einer Extension unter TYPO3 /
>>> Extbase 4.7, habe aber noch wenig Erfahrung in der
>>> Extension-Programmierung und weiß deshalb nicht was die Ursache für
>>> diese Fehlermeldung ist:
>>>>
>>>> Fatal error: Cannot redeclare class
>>>> Tx_ScCruisePlan_Repository_CruiseRepository in
>>>>habe ich folgenden Code
>>> /.../ext/sc_cruise_plan/Classes/Domain/Repository/CruiseReposi
>>> tory.php
>>>> on line 92
>>>>
>>>> Ich verstehe, dass eine erneute Deklaration / Instanzierung
>>> (?) der Klasse nicht möglich ist. Aber aus dem Code heraus
>> erkennich
>>> nicht wo das passiert, bzw. wie ich es richtig machen muss.
>>>>
>>>> Im Controller habe ich folgenden Code:
>>>>
>>>> public function listAction() {
>>>> 	$cruiseRepository =
>>> t3lib_div::makeInstance('Tx_ScCruisePlan_Domain_Repository_Cru
>>> iseRepository');
>>>> 	$this->view->assign('cruises',
>>>> $this->findBySelectedCriteria($this->settings));
>>>> }
>>>>
>>>>
>>>> Der Code meiner Repository-Klasse sieht so aus:
>>>>
>>>> class Tx_ScCruisePlan_Repository_CruiseRepository extends
>>>> Tx_Extbase_Persistence_Repository {
>>>>
>>>> 	public function findBySelectedCriteria($settings) {
>>>>
>>>> 		$query = $this->createQuery();
>>>> 		$constraints = array();
>>>> 		
>>>> 		$constraints[] =
>>> $query->greaterThan('cruiseStartDate', time());
>>>> 		...
>>>> 		$query->matching($query->logicalAnd($constraints));
>>>> 		return $query->execute();
>>>> 	}
>>>> }
>>>>
>>>> Was mache ich falsch?
>>>>
>>>> Gruß, Johannes.
>>>>
>>>
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>
>>
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>
>



More information about the TYPO3-german mailing list