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?