CakePHP 2.x: Einbetten eines Login-Formulars als Element mit dem Benutzer-Plugin und der Sicherheitskomponente von CakeDC

8

newish CakePHP Benutzer hier. Ich konnte keine Lösung für dieses Problem finden.

Ich möchte ein Login-Formular als Element in eine bestehende Seite einbetten. Ich benutze das CakeDC Benutzer-Plugin. Das Ziel besteht darin, das Anmeldeformular in die Seite einzubetten und dann bei der Anmeldung einige Inhalte auf der Seite zu aktualisieren, ohne die Seite zu aktualisieren. Bevor wir uns Gedanken über AJAX und SecurityComponent machen, möchte ich zumindest das Formular, das auf einer anderen Seite eingebettet ist, als Element erhalten.

Als Erstes habe ich versucht, den Inhalt von '/Views/Users/login.ctp' direkt in das Element zu kopieren und einzufügen. Dies gab mir eine Warnung vor der undefinierten Variable "$ Model", so dass ich das Modell als "Users.User" fest codierte (weil ich annahm, dass die Notation für den Zugriff auf ein Modell innerhalb eines Plugins "plugin.model" war, wie sie in Das Handbuch ist fehlgeschlagen: Users.usersController konnte nicht gefunden werden.

Also habe ich das Formular so angepasst, dass "Benutzer" als Modell anstelle von "$ model" verwendet wird und die Anfrage jetzt schwarz markiert wird. Wenn ich die Sicherheitskomponente deaktiviere, kann ich mich erfolgreich anmelden. Dies ist keine befriedigende Lösung (ich meine, ich könnte entscheiden, das Formular nicht zu validieren oder 'Login' als eine nicht gesperrte Aktion zu definieren, aber wenn ich das tue, dann kann ich auch keine Sicherheit für die Anmeldung aktiviert haben, richtig? ).

Hier ist der Code für app / Plugin / Benutzer / Ansicht / Elemente / login.ctp:

%Vor%

Nachfolgend ist der Code für die View, die das Element aufruft:

%Vor%

Wenn ich den Elementcode in eine Ansicht kopiere und einfüge (etwa in apps/Plugin/Users/View/Users/login.ctp ), funktioniert es unabhängig davon, ob die Sicherheit aktiviert oder deaktiviert ist. Ich vermute daher, dass etwas mit dem Formular oder Sicherheitsanrufen herumsteht.

Irgendwelche Ideen oder Hilfe würden sehr geschätzt werden.

    
user1750992 16.10.2012, 19:30
quelle

1 Antwort

0

Ich denke, das Problem ist, dass Elemente im Wesentlichen dumme Ansichten sind - sie sind nicht dazu gedacht, über Modelle Bescheid zu wissen. Sie müssen die Daten selbst weitergeben.

Normalerweise setze ich $this->set("authUser", $this->Auth->user()); in meinem AppController nachdem ich auth eingerichtet habe, damit ich die Daten des aktuell angemeldeten Benutzers überprüfen kann, einschließlich der Elemente.

Sie können Daten auch direkt wie folgt übergeben:

<?php echo $this->element("Users.login", array("user"=>$user));?>

Auch, ich bin nicht klar über Ihre Formulierung dort, aber Login sollte eine entsperrte Aktion sein, sonst wie werden sich die Benutzer zuerst anmelden?

    
Daniel 30.11.2012 05:08
quelle

Tags und Links