Wie beforeSave in CakePHP 3 verwenden? $ event, $ entity und $ options müssen immer gefüllt sein?

9

Ich bin in "PostsTable.php" Ich versuche, Formulardaten zur Behandlung von Bilddateien zu erhalten.

In CakePHP 2 habe ich folgendes gemacht:

%Vor%

Jemand könnte das in Cake 3 erklären:

%Vor%

?

HINZUGEFÜGT

Ich probiere diesen Codeschnipsel aus, um zu sehen, ob ich dieses Feld in der Datenbank nur als Test speichern kann, aber es scheint, als ob der Speicher ignoriert wird:

%Vor%

Danke

    
I Wanna Know 08.05.2015, 12:56
quelle

2 Antworten

7

Beginnen Sie mit der Funktionsdefinition.

%Vor%

Da CakePHP die Funktion automatisch aufruft, wird sie so aufgerufen. Erstellen Sie Ihre Funktion also identisch mit der Funktionsdefinition:

%Vor%

Wenn Sie nicht sicher sind, welche Daten gesendet werden, verwenden Sie die Funktion debug() von CakePHP:

%Vor%

Sobald Sie Ihre Daten in $entity gefunden haben, verwenden Sie sie, um das zu tun, was Sie mit Ihren Daten tun möchten:

%Vor%     
Naidim 01.08.2016 17:02
quelle
-5

Lassen Sie mich das Handbuch für Sie lesen:

  

Das Model.beforeSave-Ereignis wird ausgelöst, bevor die einzelnen Entitäten gespeichert werden. Durch das Beenden dieses Ereignisses wird die Sicherungsoperation abgebrochen. Wenn das Ereignis beendet wird, wird das Ergebnis des Ereignisses zurückgegeben.

Auch:

  

Model.beforeSave: Wird ausgelöst, kurz bevor die Liste der Felder, die beibehalten werden sollen, berechnet wird. Er empfängt sowohl die Entität als auch die Optionen als Argumente. Das Optionsarray wird als ArrayObject übergeben, daher werden alle Änderungen in jedem Listener reflektiert und am Ende des Ereignisses gespeichert, damit es für den Rest der Sicherungsoperation verwendet werden kann. Wird in einem der Listener false zurückgegeben, wird der Speichervorgang abgebrochen. Wenn das Ereignis mithilfe der Ereignis-API gestoppt wird, wird die Ergebniseigenschaft des Ereignisobjekts zurückgegeben. Dies kann nützlich sein, wenn Sie eine eigene Sicherungsstrategie in einem Listener implementiert haben.

Um das zu tun, was Sie zuvor in Cake2 getan haben, können Sie einfach $entity ändern, weil Entitäten die Eigenschaft Model::$data ersetzt haben.

%Vor%

Wenn Sie nicht wissen, wie Ereignisse funktionieren lesen Sie . Auch der Migrationsleitfaden muss gelesen werden. Es listet alles auf, was sich geändert hat.

    
burzum 08.05.2015 13:04
quelle

Tags und Links