Meldung Wenn Benutzer Schon Besteht

Hallo Zusammen

Ich bin überzeugt das mein Bastelansatz nicht nur kompliziert sondern auch Fehleranfällig ist.

Wäre froh wenn mir jemand auf die Sprünge hilft wie man das richtig umsetzt.

Anforderung:

Wen der gewählte Benutzername für die Registration bereits verwendet wird oben am Formular den Benutzer darauf hinweisen.

Mein Ansatz

Ich prüfe im Controller mit findByAttribute ob der Benutzername bereits besteht und gebe der redirect eine Variabel mit mit welcher ich in der View die Meldung anzeige oder nicht.

View




Formularcode...




<?

if ( $test = 1) {

	Yii::app()->user->setFlash('danger', '<strong>Fehler!</strong> Der Benutzername besteht bereits.');

	$this->widget('bootstrap.widgets.TbAlert', array(

		'block'=>true, // display a larger alert block?

		'fade'=>true, // use transitions?

		'closeText'=>'×', // close link text - if set to false, no close link is displayed

		'alerts'=>array( // configurations per alert type

			'danger'=>array('block'=>true, 'fade'=>true, 'closeText'=>'×'), // success, info, warning, error or danger

		),

	)); 

	$test = 0;

}

?>Formularcode....



Controller





public function actionRegister()

{

 	$model=new User;


 	if(isset($_POST['User']))

    {

        $model->attributes=$_POST['User'];

		

		//prüfen ob User bereits besteht

		if (User::model()->findByAttributes(array('username'=>$model->username))){

		$this->redirect(array('site/Register'),array('test'=>1));      <<------ übergibt eine 1 in der Variabel Test

		}

		

		$model->password = md5($model->password);

		

		$rnd = rand(0,9999);

		$uploadedFile=CUploadedFile::getInstance($model,'url');

        $fileName = "{$rnd}-{$uploadedFile}";  // random number + file name

        $model->url = $fileName;

      ....

      .



Kann ich das schon im Model prüfen und über die Form Validationsmeldung übergeben?

Für diesen fall gibts den Unique validator. Dazu definierst du einfach in deinem Model folgende rule:




public function rules()

{

  return array(

    ...

    array('username', 'unique'),

    ...

  );

}



Problem gelöst :slight_smile:

Unglaublich!!

Vielen Dank