Debugging speichern() false zurückgeben, CakePHP 3.0
Ich habe einige code, die hat irgendwo auf dem Weg gebrochen und ich habe Probleme beim Debuggen.
Dies ist eine vereinfachte version des es.
$data = $this->request->data;
$form = $this->Forms->get($data['id'], [
'contain' => ['FieldsForms' => ['data']
]
]);
$form = $this->Forms->patchEntity($form, $data,
['associated' => [
'FieldsForms.Data',
]
]);
if ($this->Forms->save($form)) {
//sunshine and rainbows
} else {
//wailing and gnashing of teeth
}
Ich bin Links heulen und mit den Zähnen Knirschen, ohne Fehler, soweit ich sehen kann, wenn ich die debug - $Daten wie es aussieht ist es ok (obwohl da ist es ziemlich lang und enthält eine Reihe von UUIDs es möglich ist, bin ich etwas fehlt).
Fehler bei der Validierung ist leer.
Dem speichern ist die Rückgabe von false - irgendwelche Vorschläge, wie zu Debuggen sparen kann, was die Vernunft, das ich verlassen haben.
Dank!
- Wenn du sagst, "Fehler bei der Validierung ist leer", wie kann man das überprüfen? Nach dem speichern so, dass die möglich-Tabelle Regel Fehler enthalten sind?
- Die Ansicht gerendert wird, und die Verwendung von debugging-kit zeigt die Validierung für die 'form' als leer
- Dann würde ich vorschlagen, Graben in die CakePHP-core-Quellcode zu Debuggen, der Ablaufsteuerung, der stammt aus der
Table::save()
nennen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem stellte sich heraus, dass die Daten, wie erwartet, aber konnte nicht sofort sehen, weil das speichern wurde, false zurückgeben und die Daten waren ziemlich groß.
Ich machte zuerst eine Teilmenge des Problems Daten angezeigt, die das gleiche Verhalten dann, nach ndm Vorschlag, verändert die ORM/Table.php code für die save-Funktion wie folgt vor, um in der Lage sein zu sehen, wo das problem war:
So, dass ich sehen konnte, was Los war und ging zu fix die Daten.
Nicht sicher, ob die frühere Antwort basiert auf eine ältere version, aber in der neuesten cakephp version (3.4), die Sie abrufen können, die Fehler direkt aus der $Person innerhalb der Steuerung. Die Fehler-array enthält jede Entität Feld, dass nicht mit einem child-array der fehlgeschlagenen Validierungen.
Stattdessen ändern Sie die core-Kuchen-code, den Sie dies tun können:
Für CakePHP 3.4.*
Versuchen, diesen code:
Lesen Sie mehr über logs hier: https://book.cakephp.org/3.0/en/core-libraries/logging.html#using-the-filelog-adapter