[Frage] Call to a member function on a non-object

  • NinaP NinaP
    Padawan
    0 x
    34 Beiträge
    0 Hilfreiche Beiträge
    27. 04. 2014, 11:40

    Hallo,

    seit dem Update auf Typo3 6.2 habe ich eine Fehlermeldung in meiner Extbase Extension zu der ich keine Lösung finden kann. Es wäre schön wenn jemand einen Tipp für mich hätte wo der Fehler liegen könnte.

    Er hängt sich an der Zeile
    $properties = $this->castleRepository->getProperties();
    in der CastleListController.php
    Versuche ich ein print_r($this->castleRepository);exit; bekomme ich keine Fehlermeldung. Die Fehlermeldung bleibt aber bestehen wenn ich den Inhalt der Funktion getProperties() auskommentiere und nur ein Return setze. Es scheint als ob er die Funktion getProperties() nicht finden könnte. Nur weiß ich nicht warum dies so ist.

    Liebe Grüße
    Nina

    [27-Apr-2014 11:31:18 Europe/Berlin] PHP Fatal error: Call to a member function getProperties() on a non-object in /html/typo3/typo3conf/ext/np_castle_listing/Classes/Controller/CastleListController.php on line 35

    CastleListController.php

    1. class Tx_NpCastleListing_Controller_CastleListController extends Tx_Extbase_MVC_Controller_ActionController {
    2.  
    3. /**
    4. * @var Tx_NpCastleListing_Domain_Repository_CastleRepository
    5. */
    6. protected $castleRepository;
    7.  
    8.  
    9. /**
    10.   * injectCastleRepository
    11.   *
    12.   * @param Tx_NpCastleListing_Domain_Repository_CastleRepository $castleRepository
    13.   * @return void
    14. */
    15. public function injectCastleRepository(Tx_NpCastleListing_Domain_Repository_CastleRepository $castleRepository) {
    16. $this->castleRepository = $castleRepository;
    17. }
    18. public function listAdressesAction() {
    19. #$this->view->assign('castles', $this->castleRepository->findAll());
    20. if($this->request->hasArgument('postcodeArea')){
    21. $postcodeArea = $this->request->getArgument('postcodeArea');
    22. }
    23. else{
    24. $postcodeArea = 3;
    25. }
    26. $properties = $this->castleRepository->getProperties();
    27. $this->view->assign('properties', $properties);
    28. .....

    CastleRepository.php

    1. class Tx_NpCastleListing_Domain_Repository_CastleRepository extends Tx_Extbase_Persistence_Repository {
    2.  
    3. protected $defaultOrderings = array ('name' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING);
    4. public function getProperties(){
    5. $query = $this->createQuery();
    6. $query->getQuerySettings()->setReturnRawQueryResult(TRUE);
    7. $query->statement("SELECT uid,name,title,image FROM tx_npcastleoverview_properties");
    8.  
    9. $result = $query->execute();
    10. return $result;
    11. }
    12. }


  • 1
  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    28. 04. 2014, 12:46

    Man macht schon seit einigen TYPO3 Versionen die Dependency Injection nicht mehr über eine inject Methode, sondern schreibt einfach nur @inject an die Membervariable des Repositories, das injectet werden soll. Dann mal Cache leeren und ich vermute es geht wieder.

    http://www.aemka.de/

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    28. 04. 2014, 12:48

    Und warum baut du dir die Methode getProperties() überhaupt? ein findAll() würde doch schon reichen und das existiert doch bereits implizit.

    http://www.aemka.de/

  • NinaP NinaP
    Padawan
    0 x
    34 Beiträge
    0 Hilfreiche Beiträge
    04. 05. 2014, 17:39

    ohha Danke. Das ist schon eine ziemlich alte und vor allem meine erste Extbase Extension :P

  • 1