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?