Customize Un Form

slt voila j’ai un formulaire ou je veux fait ajouter une zone de texte afin recuperer une information.pour cela apres etude je constate qu’il fallait modidifier le model ainsi j’ai ajouter une propiete.mais lorsque j’execute la vue j’ai une CException qui m’informe que cette propiete n’est pas definis alors ke faire.bref voici une extrait de mon code .




 //mon model

class Assign extends CActiveRecord

{

      

	 public $duration; 

	  

	public static function model($className=__CLASS__)

	{

		return parent::model($className);

	}


	

	public function tableName()

	{

		return 'assignment';

	}


	

	public function rules()

	{

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

		// will receive user inputs.

		return array(

			array('Username, Justification, Dateoperation,Duration', 'required'),

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

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

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

			array('AssignId, Ticketcode, Username, Justification, Dateoperation,Duration', 'safe', 'on'=>'search'),

		);

	}


	public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

		);

	}


	public function attributeLabels()

	{

		return array(

			'AssignId' => 'Assign',

			'Ticketcode' => 'Ticket',

			'Username' => 'User Account',

			'Justification' => 'Justification',

			'Dateoperation' => 'Dateoperation',

			'Duration' => 'duration',

		);

	}


	

	public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('AssignId',$this->AssignId);

		$criteria->compare('Ticketcode',$this->Ticketcode);

		$criteria->compare('Username',$this->Username);

		$criteria->compare('Justification',$this->Justification,true);

		$criteria->compare('Dateoperation',$this->Dateoperation,true);


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}

}




//mon form

<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'assign-form',

	'enableAjaxValidation'=>false,

)); ?>


	<?php echo $form->errorSummary($model); ?>


	<div class="row">

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

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

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

	</div>


	<div class="row">

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

		<?php echo $form->textArea($model,'Justification'); ?>

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

	</div>


	<div class="row">

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

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

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

	</div>


	<div class="row">

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

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

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

	</div>

	

	<div class="row buttons">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>

	</div>


<?php $this->endWidget(); ?>





</div><!-- form -->


//ma vue

<div class="view">


	<b><?php echo CHtml::encode($data->getAttributeLabel('AssignId')); ?>:</b>

	<?php echo CHtml::link(CHtml::encode($data->AssignId), array('view', 'id'=>$data->AssignId)); ?>

	<br />


	<b><?php echo CHtml::encode($data->getAttributeLabel('Username')); ?>:</b>

	<?php echo CHtml::encode('Username'); ?>

	<br />


	<b><?php echo CHtml::encode($data->getAttributeLabel('Justification')); ?>:</b>

	<?php echo CHtml::encode($data->Justification); ?>

	<br />


	<b><?php echo CHtml::encode($data->getAttributeLabel('Dateoperation')); ?>:</b>

	<?php echo CHtml::encode($data->Dateoperation); ?>

	<br />

	

<b><?php echo CHtml::encode($data->getAttributeLabel('Duration')); ?>:</b>

	<?php echo CHtml::encode($data->duration); ?>

	<br />


</div>

alors comment customize ce formulaire. a+

Salut Costa,

l’attribut que tu as rajouté c’est ‘$duration’ ? … si oui, je crois que tu l’as écrit avec une majuscule dans ton formulaire (et un peu partout ailleurs).

B)

Merci pour le cou d’oeil c’etait effectivement le probleme.dis j’aimerais aussi savoir sur yii comment faire sa propre requete (select,insert,update,delete).je dois moi meme realiser ces operations.quelqu’un aurait 'il une idee c’est urgent. merci encore. a+

J’imagine que tu ne souhaites pas utiliser les modèles (CActiveRecord) ? … oui car dans ce cas, c’est très simple d’interagir avec la DB : regarde CActiveRecord et les examples dans le blog de démo.

Si tu veux écrire toi même les requêtes, tu peux par exemple écrire :




	$command = $this->db->createCommand("INSERT INTO mytable (name, id, data) VALUES (:itemname, :userid, :data)");

	$command->bindValue(':name', $this->getUserName());

	$command->bindValue(':id', Yii::app()->getUser()->id);

	$command->bindValue(':data', 'some data');

	$command->execute();



Il te faudra au préalable avoir déclaré un composant DB dans ton fichier de configuration, bien sûr.

Je te conseille d’aller jeter un oeil à la doc CDbConnection ainsi qu’aux autres classes du package system.db.

ciao

B)