Probleme beim Erzeugen einer Benutzerverwaltung

Hallo alle zusammen,

ich hoffe mir kann jemand helfen. Und zwar bin ich recht neu im Umgang mit Yii und brauche ein paar Ideen, wie ich das folgende lösen kann:

Ich habe eine user-Tabelle in meiner MySQL-DB. In dieser Tabelle gibt es die Spalten id, user, password und email. später kommen vielleicht noch ein paar Felder hinzu.

Nun ist es so, dass ich die Form, über welche man einen neuen User anlegen oder bestehende ändern kann, schon angepasst habe. Allerdings will ich dort noch ein weiteres Feld einfügen, um sodass das Passwort bestätigt werden muss.  Es gibt hierbei allerdings noch das Problem, dass nur beim Ändern kein Passwort eingegeben wird, das bisherige nicht geändert wird. Wie kann ich das über die Regeln etc. machen? Ich bin langsam echt am verzweifeln =(

Das wäre es gerade mal fürs erste…

mfg

armin

Hallo g3cko,

du kannst in deinem Modell Regeln, sogenannte Scenarios festlegen, wann eine von dir definierte Rule angewendet werden soll.

Zum Beispiel:

array(‘password’, ‘authenticate’, ‘on’=>‘login’),
definiert das das Passwort beim Scenario Login über die Regel authenticate authentifiziert werden muss.

Für deinen Passwortvergleich kannst du dann zum Beispiel folgende Regel definieren:

array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),


password2 ist dabei eine provate Klassenvariable die du definieren und dann verwenden kannst wie alle anderen Felder des Modells, du kannst zum Beispiel eine Beschriebung dafür angeben und als activeTextField verwenden.

Um das Scenario 'register' zu nutzen musst du vor dem Validieren (save() oder validate()) im Controler umstellen das gerade dieses Scenario herscht, das funktioniert über folgenden Code:

$model->scenario='register';

Das ganze Beispiel hierzu findest du unter

http://www.yiiframew…e/de/form.model in der Rubrik “Angeben der Regeln zur Gültigkeitsprüfung” recht weit unten im Abschnitt. Such am besten auf der Seite nach register. Ein Beispiel wie das mit den Klassenvariablen funktioniert findest du zum Beispiel in der ContaktForm in deinem Modell Ordner (solltest du es nicht gelöscht haben), da ist das auch so gemacht.

Hoffe ich konnte dir helfen.

Grüße

Martin

das mit der privaten variable war wohl das problem. ich bin nicht auf die idee gekommen, dass ich das so machen muss.

Quote

Um das Scenario 'register' zu nutzen musst du vor dem Validieren (save() oder validate()) im Controler umstellen das gerade dieses Scenario herscht, das funktioniert über folgenden Code:
$model->scenario='register';

das scenario ist in meinem fall ja auch nichts anderes, als update bzw delete, wenn ich datensätze bearbeite?

wo genau poste ich so etwas, wenn ich, wie es bei mir der fall ist, ja einen CActiveRecord habe, da ich die daten auf der datenbank bearbeite?

Das Scenario kannst du nur verwenden wenn du es in den Rules eingibst. Wenn du kein Scenario angibst dann ist es auch keins. das standard ist das ohne angabe des scenarios.