Ajout d'un champ dans un formulaire généré et message d'erreur

[size=“5”][b]Edit: Grossière erreur de ma part, j’ai séparé verify_code avec des quote simple dans le controler… <_<

Problème résolu !

[/b][/size]

Bonjour,

Toujours entrain de m’initier à Yii, je souhaiterais cette fois ajouter un champ captcha à un formulaire généré.

Voici le code dans la vue :


<?php if(CCaptcha::checkRequirements()): ?>

<div class="row">

	<?php echo $form->labelEx($model,'verify_code'); ?>

	<div>

	<?php $this->widget('CCaptcha'); ?>

	<?php echo $form->textField($model,'verify_code'); ?>

	</div>

	<div class="hint">Please enter the letters as they are shown in the image above.

	<br/>Letters are not case-sensitive.</div>

	<?php echo $form->error($model,'verify_code'); ?>

</div>

<?php endif; ?>

Dans le controler Members, après modifications :


public function rules()

{

	// NOTE: you should only define rules for those attributes that

	// will receive user inputs.

	return array(

		array('login, pass, email, registration_date, connection_date, sexe, date_of_birth, rank, profile_photo, active, ban', 'verify_code','required'),

		array('active', 'numerical', 'integerOnly'=>true),

		array('login, pass, email, profile_photo', 'length', 'max'=>255),

		array('sexe', 'length', 'max'=>5),

		array('rank', 'length', 'max'=>15),

		array('ban', 'length', 'max'=>50),

		array('verify_code', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),

		// The following rule is used by search().

		// Please remove those attributes that should not be searched.

		array('id, login, pass, email, registration_date, connection_date, sexe, date_of_birth, rank, profile_photo, active, ban', 'safe', 'on'=>'search'),

	);

}

Sauf que quand j’accède à la page subscribe.php.

J’ai cette erreur,

En testant dans mon controler, j’ai compris que autoload se référait au tableau require dans la méthode rules…

Ce qui m’étonne, c’est que Yii cherche à charger une class avec pour nom, celui de mon champ. Mais après quelques recherches, je n’ai pas trouvé de class login, pass, email etc… Par ailleurs, si Yii utilise bien un class pour chaque champs, j’ai du mal à trouver l’utilité. :blink:

D’ou vient mon erreur ?

Cordialement,

JHQL. :)

Auto correction… Cool!

Bonsoir,

Je profite de ce topic pour vous faire part d’un nouveau problème. Je souhaite ajouter un champ confirm_pass à mon formulaire


<div class="row">

	<?php echo $form->labelEx($model,'confirm_pass'); ?>

	<?php echo $form->textField($model,'confirm_pass'); ?>

	<?php echo $form->error($model,'confirm_pass'); ?>

</div>	

Le model associé :


public function rules()

{

	// NOTE: you should only define rules for those attributes that

	// will receive user inputs.

	return array(

		array('login, pass, confirm_pass, email, registration_date, connection_date, sexe, date_of_birth, rank, profile_photo, active, ban, verify_code','required'),

		array('active', 'numerical', 'integerOnly'=>true),

		array('login, pass, confirm_pass, email, profile_photo', 'length', 'max'=>255),

		array('sexe', 'length', 'max'=>5),

		array('rank', 'length', 'max'=>15),

		array('ban', 'length', 'max'=>50),

		array('verify_code', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),

		// The following rule is used by search().

		// Please remove those attributes that should not be searched.

		array('id, login, pass, email, registration_date, connection_date, sexe, date_of_birth, rank, profile_photo, active, ban', 'safe', 'on'=>'search'),

	);

}

Et voici l’erreur :

Je ne comprends pas d’ou vient l’erreur.

Une idée ? :)

Salut JHQL,

as-tu bien rajouté un attribut confirm_pass dans ton modèle ? est-il bien public ?

B)

Merci !

Je n’y avait pas pensé vu qu’il n’y a pas d’attribut pour les autres champs générés !

Problème résolu ! Merci d’avoir la patience de me répondre ! :)

no problemo.

En fait les autres attributs sont directement récupérés depuis la table. Yii va analyser la table (SHOW COLUMN) afin de créer dynamiquement un attribut par colonne (nom de l’attribut = nom de la colonne).

A part ça tu peux toi même rajouter dans la définition de ta classe, n’importe quel autre attribut … évidemment il ne sera pas sauvegardé dans la table, mais bon, dans ton cas, c’est pas un souci.

Voili voilou

ciao

B)

Merci pour l’explication, j’apprécie ! :)