Das komische daran ist jetzt nur das ich im Controller ein Array bekomme das an $wwlfeuserfiles übergeben wird.

$wwlfeuserfiles = $this->wwlfeuserfilesRepository->showFeuser();

Soweit so gut.

Aber es enthält zwar die Anzahl an Datensätzen aus der Datenbankabfrage (SELECT * FROM fe_users), aber nicht alle Felder.

Ich übergebe es dann per
$this->view->assign('wwlfeuserfiles', $wwlfeuserfiles);

an Fluid und kann es auch auflisten:


<table  class="tx_wwlfeuserfiles" >

        <f:for each="{wwlfeuserfiles}" as="wwlfeuserfile">
                <tr>
                        <td>Test: {wwlfeuserfile.uid}</td>

                </tr>
        </f:for>
</table>


Aber nur uid und pid haben einen Inhalt. Alle anderen Felder der Tabelle fe_users sind leer (In der MySQL ist natürlich Inhalt vorhanden).

Christian



Am 09.03.2015 um 13:59 schrieb Marc Willmann:
Hallo Christian,

Am 09.03.15 13:54, schrieb Christian Leicht:
Der Wahnsinn,

spielen die Kommentarzeilen jetzt auch eine Rolle?

teilweise. Das @inject ist z.B. wichtig. Google nach "Dependency
Injection". Einmal verstanden willst Du nie wieder ohne DI programmieren.

Dann muss ich in \WWL\WwlFeuserfiles\Domain\Repository\WwlFeuserRepository

WwlFeuserRepository Groß schreiben? oder klein?
Die Datei unter Classes/Domain/Repository heißt aber
WwlfeuserfilesRepository.php

Klassennamen UpperCamelCase
Methodennamen lowerCamelCase
Variablen lowerCamelCase

lesbarer Code erleichtert vieles, dazu gehören auch ein paar
Konventionen, die nicht notwendigerweise technisch bedingt sind.
Allerdings gilt bei Extbase Convention over Configuration, insofern noch
ein wichtiger Grund, sich an Bewährtes zu halten.

Marc


Muss das der selbe Name sein wie in den Kommentaren?


Christian



Am 09.03.2015 um 11:53 schrieb Marc Willmann:
Hallo Christian,

ich gebe Georg dahingehend Recht, dass es Dir offenkundig noch an den
Grundlagen des MVC-Programmierens fehlt. Aber wir haben ja alle mal
angefangen. :-)


      public function showFeuser(){

              $query = $this->createQuery();
              $query->statement("SELECT * FROM fe_users LIMIT 1");
              return $query->execute();
      }

im Repository. das $query->statement() gewinnt keine Eleganzpreise,
dürfte aber funktionieren.

einen Datensatz anzeigen lassen.
Mich bringt das ganze Controller Repository Module Zeugs noch um den
Verstand. Warum hat man das jetzt so umständlich auf verschiedene
Dateien verteilt?

Das geht jetzt wirklich in die MVC-Grundlagen; nur so viel: bei größeren
Projekten ist das deutlich übersichtlicher.

Die Funktion showFeuser() habe ich in der Repository abgelegt.

Aber wo rufe ich denn die Funktion jetzt auf?


Wenn ich im Controller nun

      public function listAction() {
          $wwlfeuser = $this->WwlfeuserRepository->showFeuser();

          $this->view->assign('wwlfeuser', $wwlfeuser);
      }


verwende, dann bekomme ich nur diese Fehlermeldung:

Fatal error: Call to a member function showFeuser() on a non-object in
/home/httpd/xxx/xxx/typo3conf/ext/wwl_feuserfiles/Classes/Controller/WwlfeuserfilesController.php

on line 50

PHP meckert, dass Du showFeuser() aufrusft, ohne ein passendes Objekt zu
haben. Dein Fehler liegt also bei $this->WwlfeuserRepository (welches
vermutlich in Deinem Controller nicht existiert). Füg also in Deiner
Controllerklasse sowas wie


      /**
      * wwlfeuserRepository
      *
      * @var \VENDOR\EXTNAME\Domain\Repository\WwlFeuserRepository
      * @inject
      */
     protected $wwlfeuserRepository = NULL;

(bitte auch Groß-Kleinschreibung beachten und VENDOR/EXTNAME natürlich
anpassen) und änder in Deinem Code

$this->WwlfeuserRepository  in $this->wwlfeuserRepository

dann könnte das schon besser aussehen. :-)

Marc


_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an