Da die obigen Vorschläge für mich nicht funktionieren, habe ich meine eigene gefunden. Die Antwort ist der oben beschriebenen sehr ähnlich, aber mit einer kleinen Korrektur. (funktioniert mit CakePHP 2.6.1)
Der Standardwert kann im Controller in add -Funktion gesetzt werden ("request" wird benötigt).
%Vor%Vollständiger Codebeispiel:
%Vor% Eine Philosophie:
1) Warum das nötig ist - Wenn wir ein boolesches Attribut in der Datenbank haben, übernimmt das neu erstellte Objekt in CakePHP keine Standardwerte aus der Datenbank. Und wenn wir das Kästchen im Formular zum Hinzufügen des neuen Objekts deaktivieren und an die Datenbank senden, bedeutet dies, dass dieser Attributwert falsch ist (nicht Wert nicht festgelegt )
2) Ist dies ein idealer Ort, um den Standardwert festzulegen? - Nein, das ist kein idealer Ort, da alle Informationen über das Objekt und seine Daten im Modell sein müssen, aber ich habe es nicht geschafft um den Standardwert im Modell zuzuweisen. Sogar mit _schema Variable oder create Funktion.
Sie können den Wert in der Datenbank festlegen und im Schema verwalten, z. B .:
%Vor% Dieser Standardwert kann später in Modell oder Controller über die schema
-Eigenschaft des Modells gelesen werden:
In den letzten PHP-Versionen kann es ein One-Liner sein:
%Vor%Dies funktioniert in Cake / 2.5 mit MySQL-Adapter (keine Ahnung von anderen Szenarien).
-Datenbanken werden groß, sodass Sie sich nicht mehr an alle von Ihnen festgelegten Standardeinstellungen erinnern können. Lass es uns einfach halten:
Zum Beispiel:
%Vor%Sie können sich nicht immer an die Standardwerte in der Datenbank erinnern, wenn Sie etwa 60-80 Tabellen mit komplizierten Beziehungen haben.
AND
Mein Rat ist, dass Sie keine Standardeinstellungen festlegen, die von Ihren aktuellen Einstellungen abhängen, flexibler sein: Erstellen Sie eine Konfigurationstabelle oder setzen Sie Standardwerte in AppController, um sie blitzschnell zu finden.
Tags und Links cakephp