Ich werde gerade echt sauer… Ich bekomme es nicht gebacken mit Szenarien zu arbeiten. Und zwar habe ich eine Benutzerverwaltung und die folgenden Regeln für das User-Model definiert:
public function rules() { return array( array('username, password, password_repeat', 'required'), array('username', 'unique', 'caseSensitive' => 'false'), array('username', 'length', 'min'=>3, 'max'=>10), array('password', 'compare', 'compareAttribute'=>'password_repeat', 'on'=>'create'), array('password', 'length', 'min'=>5, 'max'=>32, 'on'=>'create'), array('password', 'checkUpdatedPassword', 'on'=>'update'), array('email', 'length', 'min'=>5, 'max'=>50), ); } /** * Diese Methode dient dem Vergleich des Passworts, wenn diese geändert * wird. **/ public function checkUpdatedPassword($attribute, $params) { if(!$this->hasErrors()) // we only want to authenticate when no input errors { // Prüfen, ob das Passwort leer ist, denn dann muss keinerlei // Prüfung erfolgen, außer, dass eben die Confirm-Eingabe auch leer // ist if ($this->password == '') { // Prüfen, ob das Confirm-Passwort auch leer ist if ($this->password_repeat != $this) { $this->addError('password', 'Both inputs for password have to be empty.'); } } else { // Prüfen, ob beide Passwörter identisch sind if ($this->password != $this->password_repeat) { $this->addError('', ''); } } } } public function safeAttributes() { return array('username', 'password', 'password_repeat', 'email'); }
Die Methoder checkUpdatedPassword wird aber nie ausgeführt. Das Problem ist wohl der “on”-Wert und ich denke, dass ich da einen Gedankenfehler drin habe.
wenn ich nun zB. die folgende URL habe, dann ist doch des nach dem Slash das Szenario, oder?
http://www.eine-url…p?r=user/create
d.h. ich hätte automatisch ein Update- und Create-Szenario? Oder stimmt das so nicht? oO Wenn nein, wie muss ich das dann machen?