Re: [TYPO3-german] Extbase macht mich verrückt
Am 09.03.15 17:55, schrieb Christian Leicht: Muss dann für jedes Feld einer Datenbankabfrage ein Modul Eintrag erstellt werden? Ich rufe ja aus meiner Extension heraus die fe_users Datenbank auf und möchte auf die Felder zugreifen. Leider kommt im Controller nichts an. Im Repository: public function showFeuser($userid){ $query = $this-createQuery(); $query-statement(SELECT * FROM fe_users WHERE uid = '.$userid.'); return $query-execute(); } Im Repository nichts um im Controller $this-wwlfeuserfilesRepository-findByUid($uid) ist doch viel einfacher? ;-) und lass _grundsätzlich_ die SQL-Statements im Repo (die braucht man nur für Ausnahmefälle) und verwende stattdessen die Extbase-Methoden. Im Controller: $wwlfeuserfiles = $this-wwlfeuserfilesRepository-showFeuser($user['uid']); Und $wwlfeuserfiles ist bis auf uid und pid leer. Christian Am 09.03.2015 um 16:23 schrieb Stephan Schuler: Hallo zusammen. Meine Vermutungen wären (mit absteigender Wahrscheinlichkeit): * Das Model ist falsch oder nicht annotiert. * Die Properties des Models haben (namentlich) nichts mit den Columns der Tabelle zu tun. * Der Cache ist nicht hinreichend gecleared. * Vielleicht gibt es gar kein passendes Model. Wobei ich dann erwarten würde dass überhaupt nichts geht, der PropertyMapper wird ja hoffentlich nicht auf eine StdClass zurückfallen und das AbstractDomainObject ist nicht umsonst abstract. Dass die Fehlerbeschreibung an Fluid und kann es auch auflisten beinhaltet zeigt mir: Die notwendigen Werkzeuge werden nicht genutzt. Sieh bitte zu dass du einen Debugger ans Laufen bekommst. Verwende eine IDE die mit xdebug klar kommt, dazu einen Webserver der xdebug verwendet und dann setz einen Breakpoint in die Zeile des $this-view-assign(). Das hätte nämlich auch schon heute Mittag offengelegt, dass das Repository ganz banal nicht in die Klasse injected wurde. Natürlich *kann* man jetzt auch mit dem f:debug()-ViewHelper hantieren. Das macht aber keinen Spaß. Zumal Du ja eigentlich überhaupt kein Fluid debuggen möchtest, Fluid geht ja offensichtlich. Pro-Tip: Das was du gerade als Statement treibst geht übrigens schöner, einfacher und erfordert nicht mal eine zusätzliche Methode im Repository. Das QueryResultInterface schreibt getFirst() vor, und das Generic/QueryResult ist so schlau, einen bestehenden Query durch ein setLimit(1) zu erweitern. https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_repository.html#a73a1b0348919b6755e4f69dcc70eba64 https://typo3.org/api/typo3cms/interface_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_query_result_interface.html#acac359f9ae56b80c7979f4a4feb736e5 https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_generic_1_1_query_result.html#acac359f9ae56b80c7979f4a4feb736e5 https://typo3.org/api/typo3cms/_query_result_8php_source.html#l00098 Gruß, Stephan Schuler Web-Entwickler | netlogix Media Telefon: +49 (911) 539909 - 0 E-Mail: stephan.schu...@netlogix.de Web: media.netlogix.de netlogix GmbH Co. KG IT-Services | IT-Training | Media Neuwieder Straße 10 | 90411 Nürnberg Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99 E-Mail: i...@netlogix.de | Web: http://www.netlogix.de netlogix GmbH Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634) Umsatzsteuer-Identifikationsnummer: DE 233472254 Geschäftsführer: Stefan Buchta, Matthias Schmidt -Ursprüngliche Nachricht- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Georg Ringer Gesendet: Montag, 9. März 2015 14:30 An: typo3-german@lists.typo3.org Betreff: Re: [TYPO3-german] Extbase macht mich verrückt Am 2015-03-09 um 13:59 schrieb Marc Willmann: teilweise. Das @inject ist z.B. wichtig. Google nach Dependency Injection. Einmal verstanden willst Du nie wieder ohne DI programmieren. ich empfehle das @inject wegzulassen und injectmethoden zu verwenden da die einiges schneller sind! lg georg ___ 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 ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german -- Marc Willmann. TYPO3-Freelancer. http://www.marc-willmann.de Seelandstr. 14-16 D-23569 Lübeck TYPO3 Certified Integrator ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http
Re: [TYPO3-german] Extbase macht mich verrückt
Der Wahnsinn, spielen die Kommentarzeilen jetzt auch eine Rolle? 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 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
Re: [TYPO3-german] Extbase macht mich verrückt
Ich glaube ja nicht das es an MVC oder OOP liegt sondern auch an Namespaces. Das alles zusammen ist mir noch so undurchsichtig Christian Am 09.03.2015 um 12:37 schrieb Georg Ringer: Hallo, Am 2015-03-09 um 11:45 schrieb Office | Artkon. Ganz EINFACH Internet.: Ich glaube nicht, dass diese Antwort zur Lösung des Problems geführt hat. nun ist die Frage was das Ziel ist, und ein Verständnis entwickelt man (ich zumindest nicht), nicht wenn man wieder ein paar Zeilen irgendwo hin kopiert. Es gibt zB http://www.amazon.de/TYPO3-Extbase-Moderne-Extension-Entwicklung-Fluid/dp/3955390705/ref=sr_1_1?ie=UTF8qid=1425900990sr=8-1keywords=lobacher+typo3 aber ich kann das nicht empfehlen weil ich es nicht kenne und auch das Vorwissen nicht kenne. Georg ___ 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
Re: [TYPO3-german] Extbase macht mich verrückt
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 tdTest: {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
Re: [TYPO3-german] Extbase macht mich verrückt
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 -- Marc Willmann. TYPO3-Freelancer. http://www.marc-willmann.de Seelandstr. 14-16 D-23569 Lübeck TYPO3 Certified Integrator ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Extbase macht mich verrückt
Am 2015-03-09 um 13:59 schrieb Marc Willmann: teilweise. Das @inject ist z.B. wichtig. Google nach Dependency Injection. Einmal verstanden willst Du nie wieder ohne DI programmieren. ich empfehle das @inject wegzulassen und injectmethoden zu verwenden da die einiges schneller sind! lg georg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Extbase macht mich verrückt
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Hallo zusammen. Meine Vermutungen wären (mit absteigender Wahrscheinlichkeit): * Das Model ist falsch oder nicht annotiert. * Die Properties des Models haben (namentlich) nichts mit den Columns der Tabelle zu tun. * Der Cache ist nicht hinreichend gecleared. * Vielleicht gibt es gar kein passendes Model. Wobei ich dann erwarten würde dass überhaupt nichts geht, der PropertyMapper wird ja hoffentlich nicht auf eine StdClass zurückfallen und das AbstractDomainObject ist nicht umsonst abstract. Dass die Fehlerbeschreibung an Fluid und kann es auch auflisten beinhaltet zeigt mir: Die notwendigen Werkzeuge werden nicht genutzt. Sieh bitte zu dass du einen Debugger ans Laufen bekommst. Verwende eine IDE die mit xdebug klar kommt, dazu einen Webserver der xdebug verwendet und dann setz einen Breakpoint in die Zeile des $this-view-assign(). Das hätte nämlich auch schon heute Mittag offengelegt, dass das Repository ganz banal nicht in die Klasse injected wurde. Natürlich *kann* man jetzt auch mit dem f:debug()-ViewHelper hantieren. Das macht aber keinen Spaß. Zumal Du ja eigentlich überhaupt kein Fluid debuggen möchtest, Fluid geht ja offensichtlich. Pro-Tip: Das was du gerade als Statement treibst geht übrigens schöner, einfacher und erfordert nicht mal eine zusätzliche Methode im Repository. Das QueryResultInterface schreibt getFirst() vor, und das Generic/QueryResult ist so schlau, einen bestehenden Query durch ein setLimit(1) zu erweitern. https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_repository.html#a73a1b0348919b6755e4f69dcc70eba64 https://typo3.org/api/typo3cms/interface_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_query_result_interface.html#acac359f9ae56b80c7979f4a4feb736e5 https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_generic_1_1_query_result.html#acac359f9ae56b80c7979f4a4feb736e5 https://typo3.org/api/typo3cms/_query_result_8php_source.html#l00098 Gruß, Stephan Schuler Web-Entwickler | netlogix Media Telefon: +49 (911) 539909 - 0 E-Mail: stephan.schu...@netlogix.de Web: media.netlogix.de netlogix GmbH Co. KG IT-Services | IT-Training | Media Neuwieder Straße 10 | 90411 Nürnberg Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99 E-Mail: i...@netlogix.de | Web: http://www.netlogix.de netlogix GmbH Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634) Umsatzsteuer-Identifikationsnummer: DE 233472254 Geschäftsführer: Stefan Buchta, Matthias Schmidt - -Ursprüngliche Nachricht- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Georg Ringer Gesendet: Montag, 9. März 2015 14:30 An: typo3-german@lists.typo3.org Betreff: Re: [TYPO3-german] Extbase macht mich verrückt Am 2015-03-09 um 13:59 schrieb Marc Willmann: teilweise. Das @inject ist z.B. wichtig. Google nach Dependency Injection. Einmal verstanden willst Du nie wieder ohne DI programmieren. ich empfehle das @inject wegzulassen und injectmethoden zu verwenden da die einiges schneller sind! lg georg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german -BEGIN PGP SIGNATURE- Version: PGP Universal 3.3.2 (Build 15704) Charset: utf-8 wpUDBQFU/brcpp0IwsibV8MBCKAyBAChj7qoOOshAFtVPfOxWdWLzsfz/hwiCdwg NPggGtXZMxVvKTfVD8YMKdTdRS+/SxNng5uwb90/SwD9gsq74mUm1jRnEpdz3pJE xnlyK3S1pfrkpo3x38obaWNi29o0Sti+zVgwDelEstyYavioGoSKuuEBKyFgtGZK BIlWMK0njg== =1V4E -END PGP SIGNATURE- ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Extbase macht mich verrückt
Hallo Georg, vielen Dank für die Rückmeldung, das ist mal ein Hinweis. Ein Kunde hat mich mal nach Literatur zu dem Thema gefragt. Natürlich habe ich auch schon in Amazonien gesucht. Und Du hast recht, ohne konkrete Vorgaben ist eine Empfehlung schwierig. Ich werde das mal mit ihm besprechen und Deinen Link weiterleiten. Greets, Arthur -Ursprüngliche Nachricht- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Georg Ringer Gesendet: Montag, 09. März 2015 12:38 An: typo3-german@lists.typo3.org Betreff: Re: [TYPO3-german] Extbase macht mich verrückt Hallo, Am 2015-03-09 um 11:45 schrieb Office | Artkon. Ganz EINFACH Internet.: Ich glaube nicht, dass diese Antwort zur Lösung des Problems geführt hat. nun ist die Frage was das Ziel ist, und ein Verständnis entwickelt man (ich zumindest nicht), nicht wenn man wieder ein paar Zeilen irgendwo hin kopiert. Es gibt zB http://www.amazon.de/TYPO3-Extbase-Moderne-Extension-Entwicklung-Fluid/dp/3955390705/ref=sr_1_1?ie=UTF8qid=1425900990sr=8-1keywords=lobacher+typo3 aber ich kann das nicht empfehlen weil ich es nicht kenne und auch das Vorwissen nicht kenne. Georg ___ 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
Re: [TYPO3-german] Extbase macht mich verrückt
Muss dann für jedes Feld einer Datenbankabfrage ein Modul Eintrag erstellt werden? Ich rufe ja aus meiner Extension heraus die fe_users Datenbank auf und möchte auf die Felder zugreifen. Leider kommt im Controller nichts an. Im Repository: public function showFeuser($userid){ $query = $this-createQuery(); $query-statement(SELECT * FROM fe_users WHERE uid = '.$userid.'); return $query-execute(); } Im Controller: $wwlfeuserfiles = $this-wwlfeuserfilesRepository-showFeuser($user['uid']); Und $wwlfeuserfiles ist bis auf uid und pid leer. Christian Am 09.03.2015 um 16:23 schrieb Stephan Schuler: -BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Hallo zusammen. Meine Vermutungen wären (mit absteigender Wahrscheinlichkeit): * Das Model ist falsch oder nicht annotiert. * Die Properties des Models haben (namentlich) nichts mit den Columns der Tabelle zu tun. * Der Cache ist nicht hinreichend gecleared. * Vielleicht gibt es gar kein passendes Model. Wobei ich dann erwarten würde dass überhaupt nichts geht, der PropertyMapper wird ja hoffentlich nicht auf eine StdClass zurückfallen und das AbstractDomainObject ist nicht umsonst abstract. Dass die Fehlerbeschreibung an Fluid und kann es auch auflisten beinhaltet zeigt mir: Die notwendigen Werkzeuge werden nicht genutzt. Sieh bitte zu dass du einen Debugger ans Laufen bekommst. Verwende eine IDE die mit xdebug klar kommt, dazu einen Webserver der xdebug verwendet und dann setz einen Breakpoint in die Zeile des $this-view-assign(). Das hätte nämlich auch schon heute Mittag offengelegt, dass das Repository ganz banal nicht in die Klasse injected wurde. Natürlich *kann* man jetzt auch mit dem f:debug()-ViewHelper hantieren. Das macht aber keinen Spaß. Zumal Du ja eigentlich überhaupt kein Fluid debuggen möchtest, Fluid geht ja offensichtlich. Pro-Tip: Das was du gerade als Statement treibst geht übrigens schöner, einfacher und erfordert nicht mal eine zusätzliche Methode im Repository. Das QueryResultInterface schreibt getFirst() vor, und das Generic/QueryResult ist so schlau, einen bestehenden Query durch ein setLimit(1) zu erweitern. https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_repository.html#a73a1b0348919b6755e4f69dcc70eba64 https://typo3.org/api/typo3cms/interface_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_query_result_interface.html#acac359f9ae56b80c7979f4a4feb736e5 https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_generic_1_1_query_result.html#acac359f9ae56b80c7979f4a4feb736e5 https://typo3.org/api/typo3cms/_query_result_8php_source.html#l00098 Gruß, Stephan Schuler Web-Entwickler | netlogix Media Telefon: +49 (911) 539909 - 0 E-Mail: stephan.schu...@netlogix.de Web: media.netlogix.de netlogix GmbH Co. KG IT-Services | IT-Training | Media Neuwieder Straße 10 | 90411 Nürnberg Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99 E-Mail: i...@netlogix.de | Web: http://www.netlogix.de netlogix GmbH Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634) Umsatzsteuer-Identifikationsnummer: DE 233472254 Geschäftsführer: Stefan Buchta, Matthias Schmidt - -Ursprüngliche Nachricht- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Georg Ringer Gesendet: Montag, 9. März 2015 14:30 An: typo3-german@lists.typo3.org Betreff: Re: [TYPO3-german] Extbase macht mich verrückt Am 2015-03-09 um 13:59 schrieb Marc Willmann: teilweise. Das @inject ist z.B. wichtig. Google nach Dependency Injection. Einmal verstanden willst Du nie wieder ohne DI programmieren. ich empfehle das @inject wegzulassen und injectmethoden zu verwenden da die einiges schneller sind! lg georg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german -BEGIN PGP SIGNATURE- Version: PGP Universal 3.3.2 (Build 15704) Charset: utf-8 wpUDBQFU/brcpp0IwsibV8MBCKAyBAChj7qoOOshAFtVPfOxWdWLzsfz/hwiCdwg NPggGtXZMxVvKTfVD8YMKdTdRS+/SxNng5uwb90/SwD9gsq74mUm1jRnEpdz3pJE xnlyK3S1pfrkpo3x38obaWNi29o0Sti+zVgwDelEstyYavioGoSKuuEBKyFgtGZK BIlWMK0njg== =1V4E -END PGP SIGNATURE- ___ 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
Re: [TYPO3-german] Extbase macht mich verrückt
Hallo, ganz ehrlich, welche Antwort willst du nun haben? Das ist in jedem OOP so dass man das nach Funktion auftrennt. Leg dir doch ein Extbase-Buch zu?! lg georg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Extbase macht mich verrückt
Ich glaube nicht, dass diese Antwort zur Lösung des Problems geführt hat. Greets, Arthur -Ursprüngliche Nachricht- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Georg Ringer Gesendet: Montag, 09. März 2015 11:35 An: typo3-german@lists.typo3.org Betreff: Re: [TYPO3-german] Extbase macht mich verrückt Hallo, ganz ehrlich, welche Antwort willst du nun haben? Das ist in jedem OOP so dass man das nach Funktion auftrennt. Leg dir doch ein Extbase-Buch zu?! lg georg ___ 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
Re: [TYPO3-german] Extbase macht mich verrückt
Ja, Geaorg, ich verstehe ja das OOP die Zukunft ist und für große Projekte viele Vorteile bringt. Aber wenn man mal nur was kleines hat, wie eine einfachste Extension, dann ist der Aufwand schon sehr groß. Christian Am 09.03.2015 um 11:35 schrieb Georg Ringer: Hallo, ganz ehrlich, welche Antwort willst du nun haben? Das ist in jedem OOP so dass man das nach Funktion auftrennt. Leg dir doch ein Extbase-Buch zu?! lg georg ___ 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
Re: [TYPO3-german] Extbase macht mich verrückt
BTW, welches Buch kannst Du für Einsteiger empfehlen? Greets, Arthur -Ursprüngliche Nachricht- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Georg Ringer Gesendet: Montag, 09. März 2015 11:35 An: typo3-german@lists.typo3.org Betreff: Re: [TYPO3-german] Extbase macht mich verrückt Hallo, ganz ehrlich, welche Antwort willst du nun haben? Das ist in jedem OOP so dass man das nach Funktion auftrennt. Leg dir doch ein Extbase-Buch zu?! lg georg ___ 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
Re: [TYPO3-german] Extbase macht mich verrückt
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 -- Marc Willmann. TYPO3-Freelancer. http://www.marc-willmann.de Seelandstr. 14-16 D-23569 Lübeck TYPO3 Certified Integrator ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
[TYPO3-german] Extbase macht mich verrückt
Hallo, ich versuche schon einige Zeit eine Extension zu erstellen mittels der ich ein FE PlugIn erzeuge um einen Datensatz der FE_Users Tabelle anzuzeigen. Das ist aber nicht so einfach. Dazu habe ich im Kickstarter ein leeres Projekt angelegt und will jetzt über public function showFeuser(){ $query = $this-createQuery(); $query-statement(SELECT * FROM fe_users LIMIT 1); return $query-execute(); } 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? 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 Christian ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german