Yii Framework Forum: Ajout d'un champ dans un formulaire généré et message d'erreur - Yii Framework Forum

Jump to content

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

Ajout d'un champ dans un formulaire généré et message d'erreur Malgré quelques modifications dans le controler adéquate Rate Topic: -----

#1 User is offline   JHQL 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 18-June 12

Posted 21 June 2012 - 04:01 AM

Edit: Grossière erreur de ma part, j'ai séparé verify_code avec des quote simple dans le controler... <_<

Problème résolu !


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,

Quote

PHP warning

include(verify_code.php): failed to open stream: No such file or directory

/home/login/workspace/project/ressources/framework/YiiBase.php(418)

406                 {
407                     foreach(self::$_includePaths as $path)
408                     {
409                         $classFile=$path.DIRECTORY_SEPARATOR.$className.'.php';
410                         if(is_file($classFile))
411                         {
412                             include($classFile);
413                             break;
414                         }
415                     }
416                 }
417                 else
418                     include($className.'.php');
419             }
420             else  // class name with namespace in PHP 5.3
421             {
422                 $namespace=str_replace('\\','.',ltrim($className,'\\'));
423                 if(($path=self::getPathOfAlias($namespace))!==false)
424                     include($path.'.php');
425                 else
426                     return false;
427             }
428             return class_exists($className,false) || interface_exists($className,false);
429         }
430         return true;


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. :)
0

#2 User is offline   fouss 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 394
  • Joined: 05-October 10
  • Location:Bamako Mali

Posted 21 June 2012 - 04:49 AM

View PostJHQL, on 21 June 2012 - 04:01 AM, said:

Edit: Grossière erreur de ma part, j'ai séparé verify_code avec des quote simple dans le controler... <_<

Problème résolu !


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!
Posted Image
0

#3 User is offline   JHQL 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 18-June 12

Posted 22 June 2012 - 04:56 AM

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 :

Quote

CException

Property "Members.confirm_pass" is not defined.

/home/login/workspace/project/ressources/framework/db/ar/CActiveRecord.php(144)

132      */
133     public function __get($name)
134     {
135         if(isset($this->_attributes[$name]))
136             return $this->_attributes[$name];
137         else if(isset($this->getMetaData()->columns[$name]))
138             return null;
139         else if(isset($this->_related[$name]))
140             return $this->_related[$name];
141         else if(isset($this->getMetaData()->relations[$name]))
142             return $this->getRelated($name);
143         else
144             return parent::__get($name);
145     }
146 
147     /**
148      * PHP setter magic method.
149      * This method is overridden so that AR attributes can be accessed like properties.
150      * @param string $name property name
151      * @param mixed $value property value
152      */
153     public function __set($name,$value)
154     {
155         if($this->setAttribute($name,$value)===false)
156         {


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

Une idée ? :)
0

#4 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 647
  • Joined: 29-November 08
  • Location:Paris, France

Posted 22 June 2012 - 05:14 AM

Salut JHQL,
as-tu bien rajouté un attribut confirm_pass dans ton modèle ? est-il bien public ?
B)
0

#5 User is offline   JHQL 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 18-June 12

Posted 22 June 2012 - 06:04 AM

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 ! :)
0

#6 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 647
  • Joined: 29-November 08
  • Location:Paris, France

Posted 22 June 2012 - 12:18 PM

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)
0

#7 User is offline   JHQL 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 18-June 12

Posted 23 June 2012 - 03:44 AM

Merci pour l'explication, j'apprécie ! :)
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