CakePHP: Übergabe von $ this-data an den View from Controller

8

Ich benutze CakePHP 1.2 und ich frage mich nur, ob es irgendwelche Seiteneffekte gibt, die $ this- & gt; -Daten an die Ansicht vom Controller zu übergeben.

Beispiel:

%Vor%

anstelle von:

%Vor%

Dadurch habe ich das $ this- & gt; set () vom Controller alle zusammen übersprungen. Verstößt dies gegen ein MVC-Muster oder irgendein Sicherheitsproblem, das ich übersehen habe? Ich habe gesehen, dass $ this- & gt; -Daten mit der Auth-Komponente das Array [_Token] enthalten.

Danke

    
Kien Pham 12.11.2009, 18:44
quelle

5 Antworten

14

Sie müssen sich der verschiedenen Orte bewusst sein, an denen Cake Helpers automatisch nach Daten suchen, da dies wirklich einen Unterschied macht. Der Formular-Assistent füllt Felder automatisch anhand des Inhalts von $this->data aus. So bleiben Formulardaten bestehen, wenn die Validierung fehlschlägt. OTOH, ein Array <select> elements options wird automatisch aus dem Namen des Pluralfelds,
übernommen z.B. $form->select('Model.foo_id') wird seine Optionen von $foos übernehmen, falls gesetzt.

Daher hat $this->data seinen besonderen Platz und sollte nicht leicht verwendet werden, genauso wie benannte Variablen ihre Verwendung haben und nicht ignoriert werden sollten. Verwenden Sie beide entsprechend. Wenn Sie den Inhalt von Form Helper nicht automatisch festlegen möchten, verwenden Sie set() Ihre Variablen. IMHO ist es auch besser lesbar, einen Variablennamen zuzuweisen, der auf die enthaltenen Daten verweist. Alle Ihre Ansichten, die mit $this->data arbeiten, sind weniger klar als eine Ansicht, die auf $foo und eine weitere auf $bar läuft.

    
deceze 13.11.2009, 01:28
quelle
7

In CakePHP 2.x sollten Sie $this->request->data anstelle von plain $this->data verwenden, sonst könnte dieser Fehler auftreten:

  

Indirekte Änderung der überladenen Eigenschaft View :: $ data hat keine Auswirkung

    
Lukas LT 17.06.2012 20:54
quelle
3

$controller->data ist für Daten gedacht, die von der View-Datei an das Steuerelement gesendet werden.

$view->data ist für allgemeine Daten.

Ich würde es vermeiden, es zu tun, um gesund zu bleiben. Außerdem tippst du mehr in Sicht.

    
Funky Dude 12.11.2009 19:29
quelle
2

Es gibt keinen Grund, $ this- & gt; -Daten direkt festzulegen, außer wenn Sie mit Formularen arbeiten.

Warum brechen Konvention - Controller: Set ist da aus einem Grund. Wenn Sie Daten für Anzeige- oder Anzeigelogik an die Ansicht übergeben möchten, sollten Sie die angegebene Funktion verwenden, anstatt zu versuchen, Controller: -Daten für unbeabsichtigte Zwecke zu übernehmen.

Alles ist einfacher in CakePHP, wenn du die Regeln befolgst und die Dinge richtig und richtig machst.

    
Abba Bryant 13.11.2009 18:17
quelle
2

In cakephp version 2. * tritt ein Fehler auf, wenn Sie versuchen, Daten in $this->data

festzulegen     
user934167 06.01.2012 03:04
quelle

Tags und Links