Yii Framework Forum: Unique Validation Rule - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Unique Validation Rule Rate Topic: -----

#1 User is offline   MeiSign 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 24-April 12

Posted 18 May 2012 - 07:53 AM

Hallo,

ich habe zur Zeit folgendes Problem.
Ich habe eine Active Record Class namens "UserDbModel" mit folgenden Rules:
		
return array(
	array('email, password', 'required', 'on'=>'login'),
	array('username', 'unique', 'attributeName' => 'username', 'caseSensitive' => false, 'className' => 'UserDbModel', 'enableClientValidation' => true),
	array('pointsSolo, pointsTeamm', 'numerical', 'integerOnly'=>true),
	array('email', 'length', 'max'=>254),
	array('username', 'length', 'max'=>20),
	array('city', 'length', 'max'=>11),
	array('token', 'length', 'max'=>30),
	// The following rule is used by search().
	// Please remove those attributes that should not be searched.
	array('id, email, username, city, lastSeen, registered, pointsSolo, pointsTeam', 'safe', 'on'=>'search'),
);


Dazu habe ich ein Formular erstellt:
<?php 
	$form=$this->beginWidget('CActiveForm', array( 'enableClientValidation'=>true,												  'clientOptions'=>array('validateOnSubmit'=>true,),)); 
    echo $form->errorSummary($model); ?>
 
    <div class="row">
        <?php echo $form->label($model,'username'); ?>
        <?php echo $form->textField($model,'username', array('value' => $model->username)); ?>
        <?php  echo $form->error($model,'username'); ?>
    </div>
 
    <div class="row">
        <?php echo $form->label($model,'city'); ?>
        <?php echo $form->textField($model,'city', array('value' => $model->city)) ?>
        <?php echo $form->error($model,'city'); ?>
    </div>

    <div class="row submit">
        <?php echo CHtml::submitButton('Save'); ?>
    </div>
 
<?php $this->endWidget(); ?>


Die Validation des Formulars funktioniert mit Ausnahme von der Uniquerule des Usernames. Hat jemand eine Idee wieso? Das Feld wird scheinbar auch validiert aber egal was ich eingebe, danach wird das Feld immer grün also als validiert markiert.

Edit: Ich habe gerade bemerkt, dass die Validation Rule beim Absenden des Formulars greift und dann einen Fehler anzeigt, wie kann ich das auch Clientseitig prüfen? enableClientValidation ist ja auch true gesetzt.

Grüße,
Stefan
Check out my ChartJS Extension to get some nice Charts as Widgets easily in your application. https://github.com/MeiSign/yii-chartjs
0

#2 User is offline   domo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 27-February 12

Posted 13 July 2012 - 04:14 AM

Hallo Stefan

Ich habe dasselbe Problem. Konntest du es zwischenzeitlich lösen? Bin dankbar für jeden Tipp...

Beste Grüsse
Domo
0

#3 User is offline   Ben 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 266
  • Joined: 15-March 09

Posted 15 July 2012 - 08:20 AM

Also für mich sieht es so aus als würde CUniqueValidator einfach keine clientseitige Validierung unterstützen (Methode clientValidateAttribute der Basisklasse CValidator ist nicht überschrieben). Macht auch irgendwo Sinn, weil ja gegen die DB geprüft werden muss. Andere Validator wie CBooleanValidator haben es da natürlich leichter. Das einzige was mir im Moment einfallen würde: neue Klasse von CUniqueValidator ableiten, clientValidateAttribute überschreiben. Die Methode muss JavaScript Code zurückgeben, der einen AJAX-Aufruf an deine Anwendung macht. Das heißt du bräuchtest zusätzlich noch ne Action, die dann eben prüft ob der eingegebene Wert unique ist. Ist dann zwar keine reine clientseitige Validierung mehr, aber wohl das was noch am ehesten rankommt.
Don't like ads in my sig...
0

#4 User is offline   MeiSign 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 24-April 12

Posted 15 July 2012 - 03:37 PM

Ich habe in der Sache erstmal nicht weiter geforscht, da es nur ein nice to have Feature gewesen wäre. Der Lösungsansatz von Ben erscheint aber logisch und den werden wir dann wohl auch in Betracht ziehen.
Check out my ChartJS Extension to get some nice Charts as Widgets easily in your application. https://github.com/MeiSign/yii-chartjs
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users