Ich erstelle eine App, wo Benutzer kann Meta-Feld erstellen, um Daten in der Datenbank zu speichern, diese Felder erhalten verschiedene Arten von Daten, wie Daten oder monetäre Werte.Yii Modell und benutzerdefinierte Felder
Meine erste Idee, diese Felder zu erstellen, ist in einer Datenbanktabelle (zB: meta_fields) gespeichert, der Name, Wert und Validierungen dieses Feldes.
Nach der Zeit der Verwendung es auf App, ich beabsichtige, die AR-Methoden __get und __set zu erweitern, um das Namensfeld als Attribut zu verwenden.
Beispiel:
Wenn auf meinem Tisch meta_fields Ich habe diese Werte:
----------------------------------------------------
| id | name | value | validation |
----------------------------------------------------
| 1 | money_en | $562,00 | some validation... |
----------------------------------------------------
| 2 | date_crt | 2010-12-09 | some validation... |
----------------------------------------------------
ich in meinen Ansichten und Controller wie sie verwendet werden sollen:
$model->money_en //will return $562,00
Nun die Fragen sind :
1 - Wie kann ich diese Art von Feldern verwenden, um Werte zu speichern und wiederherzustellen? 2 - Wie kann ich verschiedene Validierungsarten für diese Felder verwenden? Seit ich das Validierungsarray als serialisierte Werte auf der Datenbank speichere?
Danke.
Ich brauche ein wenig mehr darüber, weil ich es vorher noch nie benutzt habe. – GodFather
Sie könnten dem EAV-Verhalten zusätzlichen Code hinzufügen, um die Validierung zu verarbeiten. Das Verhalten behandelt jetzt nur das Abrufen und Einstellen, aber ein wenig Ellenbogenfett könnte eine validateEavAttributes() -Methode hinzufügen, die Sie in Ihrem Modell vorValidate aufrufen könnten. Es scheint leider nicht, dass es eine fertige Lösung für Sie gibt, aber das könnte definitiv funktionieren. – thaddeusmt