Empfehlungen: Erweiterte Suche

Gelöst: Daten an Element übergeben

Ausgabedaten formatieren und darstellen

Gelöst: Daten an Element übergeben

Beitragvon enigmartin » Mi 13. Apr 2011, 08:58

Hallo ihr Bäcker,

ich hab ein Problem, was mich ein wenig zum verzeifeln bringt. Ich möchte gern ein Element verwenden um ein kleines Benutzerprofil anzeigen zu können. Ist ein Benutzer angemeldet möchte ich also die Benutzerdaten (Benutzername, Profilbild, usw.) an ein Element weitergeben und dort auslesen. Auch will ich irgendwann ein Element einbinden was die letzten 5-10 Einträge in der Datenbank anzeigt aber gerade daran scheitere ich.

Ich habe es mit der requestAction versucht, was mir aber immer wieder einen Umleitungsfehler beschert. Und das bekomme ich beim besten will nicht weg. Ich hab schon geschaut ob das vielleicht eine veraltete Methode ist aber sie wird in der aktuellen Dokumentation wieder genutzt.

Siehe da: http://book.cakephp.org/view/991/requestAction

Kann mir da jemand helfen? Momentan habe ich da eine rechte unkonventionelle Lösung gefunden, dir mir nicht sehr gefällt und sicher auch nicht so gewollt ist.

Vielen Dank im vorraus
Zuletzt geändert von enigmartin am Fr 15. Apr 2011, 19:36, insgesamt 1-mal geändert.
Benutzeravatar
enigmartin
 
Beiträge: 40
Registriert: So 27. Mär 2011, 10:42
CakePHP-Version: 1.3.8
OS: Windows 7

Re: Daten an Element übergeben

Beitragvon euromark » Mi 13. Apr 2011, 10:23

prinzipiell gilt:
request action is nur was für die, die es anders nich hinkriegen.
anders gesagt: wer das wirklich braucht, macht gehörig was falsch.
es ist nebenbei auch der performance killer schlechthin

einfach die daten im controller bereits auslesen und an den view übergeben
wenn das element dann merkt, dass die daten da sind, werden die einfach aufbereitet ausgegeben.
thats it
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Daten an Element übergeben

Beitragvon enigmartin » Mi 13. Apr 2011, 14:56

Danke für deine Antwort. Genau das mit dem Übergeben ist aber die Frage. Wie geht das von statten? Ich erstelle mir eine Methode im Controller fertig, die die Dateien vorbereitet, dann muss es ja eine Funktion geben womit ich die Daten an ein Element weitergebe, also nicht an ein einfaches view, sondern ein Element.
Benutzeravatar
enigmartin
 
Beiträge: 40
Registriert: So 27. Mär 2011, 10:42
CakePHP-Version: 1.3.8
OS: Windows 7

Re: Daten an Element übergeben

Beitragvon mbrod » Mi 13. Apr 2011, 15:22

Sollte mit
Code: Alles auswählen
$this->render('/elements/whatever');
gehen.
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Daten an Element übergeben

Beitragvon enigmartin » Mi 13. Apr 2011, 16:18

Mmh, danke, das ganze sieht jetzt so aus:
Code: Alles auswählen
function userInfo()
{
    $user = $this->User->findById( $this->Auth->user('id') );
    $this->set('user', $user);
    $this->render('/elements/zellen/menue-user');
}


Und der Fehler der das Ganze begleitet sieht wie folgt aus:

Notice (8): Undefined variable: user [APP\views\elements\zellen\menue-user.ctp, line 33]

Dieser Fehler taucht übrigens auch auf wenn ich bewusst das Element falsch benenne.
Benutzeravatar
enigmartin
 
Beiträge: 40
Registriert: So 27. Mär 2011, 10:42
CakePHP-Version: 1.3.8
OS: Windows 7

Re: Daten an Element übergeben

Beitragvon mbrod » Mi 13. Apr 2011, 16:34

Ich kann mich erinnern, dass ich mal ein Problem hatte, wenn im Dateinamen der Bindestrich vorkommt. Vielleicht mal menue-user umbenennen: menue_user
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Daten an Element übergeben

Beitragvon euromark » Mi 13. Apr 2011, 16:38

this->set() übergibt die daten an view + ALLE elemente
also ich seh da keine probleme
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Daten an Element übergeben

Beitragvon enigmartin » Mi 13. Apr 2011, 16:42

mbrod hat geschrieben:Ich kann mich erinnern, dass ich mal ein Problem hatte, wenn im Dateinamen der Bindestrich vorkommt. Vielleicht mal menue-user umbenennen: menue_user

Das war es leider nicht. Gleicher Fehler weiterhin. Ich benenne alle meine elements so mit Bindestrich, gab bisher noch keine Probleme...

euromark hat geschrieben:this->set() übergibt die daten an view + ALLE elemente
also ich seh da keine probleme

Das Problem besteht aber. In der Fehlermeldung steht ja eben das die Variable $user nicht vorhanden ist, was so viel heißt das $this->set() eben keine Daten übergeben hat. Glaube mir...

Muss ich hier vielleicht noch was angeben?
Code: Alles auswählen
<?php echo $this->element('zellen/menue-user'); ?>
Benutzeravatar
enigmartin
 
Beiträge: 40
Registriert: So 27. Mär 2011, 10:42
CakePHP-Version: 1.3.8
OS: Windows 7

Re: Daten an Element übergeben

Beitragvon euromark » Mi 13. Apr 2011, 16:47

sicher, dass du im richtigen controller in der richtigen action bist?
$this->set(compact('user'));

$user verfügbar in view + elemente SOFERN $user nicht lokal überschreiben wird!!!
wenn du im view foreach ($users as $user) machst etc, dann ist $user natürlich kaputt

nimm etwas einzigartigeres wie $elementUser etc
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Daten an Element übergeben

Beitragvon enigmartin » Mi 13. Apr 2011, 17:10

euromark hat geschrieben:sicher, dass du im richtigen controller in der richtigen action bist?
$this->set(compact('user'));


Ja, in dem richtigen Controller bin ich definitiv. Ob ich in der richtigen Action/Methode bin weiß ich nicht, da ich diese schließlich nirgends aufrufe, das macht mich auch ein wenig stutzig. Ich will damit auf jeder Seite, vorrausgesetzt ein Benutzer ist angemeldet, Beispielsweise unter anderem dessen Benutzerbild und Benutzername anzeigen. Dies kann also sowohl im UsersController, im PagesController oder auch in anderen Controllern der Fall sein.

euromark hat geschrieben:$user verfügbar in view + elemente SOFERN $user nicht lokal überschreiben wird!!!
wenn du im view foreach ($users as $user) machst etc, dann ist $user natürlich kaputt

Ich brauche keine foreach, weil ich die Daten EINES Nutzers geziehlt auslesen möchte.

euromark hat geschrieben:nimm etwas einzigartigeres wie $elementUser etc

Ich überschreibe die Variable auch nicht, da ich in dem element und auch in der Methode keine weiteren Variablen habe. Ich habe spaßeshalber mal einen anderen Namen vergeben, den ich definitiv nirgends verwendet habe. Weiterhin der gleiche Fehler. Es kann doch nicht so schwer sein Daten an ein Element zu senden, oder sehe ich das falsch.
Benutzeravatar
enigmartin
 
Beiträge: 40
Registriert: So 27. Mär 2011, 10:42
CakePHP-Version: 1.3.8
OS: Windows 7

Nächste

Zurück zu Views

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast