Yii Framework Forum: Personnaliser ses formulaires - Yii Framework Forum

Jump to content

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

Personnaliser ses formulaires Ne pas avoir que des champs de texte Rate Topic: -----

#1 User is offline   Mythril 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 13-March 12

Posted 13 March 2012 - 02:46 AM

Bonjour à tous !
J'ai un petit soucis à l'utilisation de Yii. J'ai généré tout ce qui va bien par rapport à ma base de données (Une 10aine de tables, avec différents liens entre elles). Pour cela tout fonctionne bien. Par la suite, j'ai généré les formulaires et cela fonctionne, encore, correctement.
Par contre, le tout n'est pas très ergonomique. Par exemple, je voudrais ajouter une entrée dans ma table contenant des clefs étrangères. Ces clefs sont en fait des ID (ici d'un employé). Du coup, dans le formulaire, il faut taper "à la main" l'ID de l'employé. Pas très pratique pour l'utilisateur. Est-il possible de remplacer ce champ de texte par un menu déroulant avec le nom des employés (récupérés via une jointure SQL par exemple) ? Désolé si je ne suis pas très clair.
De la même façon, j'ai une contrainte "Check" sur un champ. Je voudrais remplacer le champ de texte par un combo box avec les deux seuls valeurs que ce champ peut prendre. Comment faire ?
Enfin, plusieurs de mes champs demandent des dates. Cependant, étant au format "Date" de MySQL (Imposant le YYYY-MM-DD), l'insertion n'est pas des plus aisées pour un utilisateur français. Existe t-il un moyen "d'assister" l'utilisateur dans l'entrée de sa date ?
Merci !
0

#2 User is offline   fouss 

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

Posted 13 March 2012 - 06:06 AM

Pour être pratique, peux tu faire la copie d'un de te formulaire à problème pour qu'on puisse mieux t'aider?
Posted Image
0

#3 User is offline   Mythril 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 13-March 12

Posted 14 March 2012 - 07:26 AM

Voila un screen des formulaires actuels. Je voudrais remplacer ces champs de texte demandant un ID par une liste déroulante... En proposant autre chose que les ID.

Attached File(s)


0

#4 User is offline   fouss 

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

Posted 14 March 2012 - 08:28 AM

View PostMythril, on 14 March 2012 - 07:26 AM, said:

Voila un screen des formulaires actuels. Je voudrais remplacer ces champs de texte demandant un ID par une liste déroulante... En proposant autre chose que les ID.


ça semble pas être le bon screen.
Il est préférable de coller le code de ton _form
Posted Image
0

#5 User is offline   bennouna 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,168
  • Joined: 05-January 12
  • Location:Morocco

Posted 14 March 2012 - 12:27 PM

Bonjour

View PostMythril, on 13 March 2012 - 02:46 AM, said:

Est-il possible de remplacer ce champ de texte par un menu déroulant avec le nom des employés (récupérés via une jointure SQL par exemple) ? Désolé si je ne suis pas très clair.


En fait, si tu utilises Gii pour générer tes vues, tu n'auras effectivement que des champs texte. Deux solutions s'offrent à toi:
  • Tu changes dans la vue _form.php adéquate les echo $form->textField … concernés par les helper adéquats. Dans le cas ci-dessus, tu trouveras certainement la ligne suivante :

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


    En partant du principe que le modèle « employés » s'appelle Employe et que le champ de jointure sur l'id de l'employé s'appelle idEmploye dans le modèle cible, il faudra modifier la ligne de code ci-dessus par :

    <?php echo $form->dropDownList($model,'id_Employe',
      CHtml::listData(Employe::model()->findAll(), 'id', 'nom_Employe'),
        array('empty' => '» Sélectionnez l\'employé dans la liste')
    ); ?>


  • Ou bien tu utilise l'extension Giix (au dessus de Gii) qui est plus intelligente à ce niveau notamment.


View PostMythril, on 13 March 2012 - 02:46 AM, said:

De la même façon, j'ai une contrainte "Check" sur un champ. Je voudrais remplacer le champ de texte par un combo box avec les deux seuls valeurs que ce champ peut prendre. Comment faire ?


Je pense que tu as compris le principe ci-dessus. En tout cas, tu gagnerais à te documenter sur les helpers proposés par CActiveForm.

Quote

Enfin, plusieurs de mes champs demandent des dates. Cependant, étant au format "Date" de MySQL (Imposant le YYYY-MM-DD), l'insertion n'est pas des plus aisées pour un utilisateur français. Existe t-il un moyen "d'assister" l'utilisateur dans l'entrée de sa date ?
Merci !


Là c'est un peu différent. Il y a deux aspects :
  • La saisie / sélection de la date au format français. Il vaudrait mieux utiliser le widget CJuiDatePicker pour cela. Exemple :
    <?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(
      'model'=>$model,
      'attribute'=>'attributDate',
      'name'=>'NomModele[attributDate]',
      'language'=>Yii::app()->language, //il faut aussi paramétrer dans [b]protected/config/mail.php[/b] la langue source (anglais) et la langue de l'application (français)
      'options'=>array(
        'showAnim'=>'fold', // 'show' (the default), 'slideDown', 'fadeIn', 'fold'
        'showOn'=>'both', // 'focus', 'button', 'both'
        'buttonText'=>Yii::t('ui','Afficher le calendrier'), 
        'buttonImage'=>$baseUrl.'/images/calendar.png', 
        'buttonImageOnly'=>false,
        'changeMonth'=>true,
        'changeYear'=>true,
        'showButtonPanel'=>true,
        'autoSize'=>false,
        'yearRange'=>'1910:2020',
        'maxDate'=>'+0'
      ),
    ));
    ?>


  • La sauvegarde de la date dans la base de données. Il faut obligatoirement donner le bon format sous peine de voir stocker une valeur nulle. Dans l'événement beforeSave du modèle (je suppose que c'est un champ date et non datetime, sinon il faudrait adapter)
    list($d, $m, $y) = explode('/', $this->attributDate);
    $this->attributDate = $y . '-' . $m . '-' . $d;
    

0

#6 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 19 March 2012 - 02:03 AM

Tu es étudiant à l'iut d'annecy ?
0

#7 User is offline   Mythril 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 13-March 12

Posted 19 March 2012 - 07:53 AM

tellibus > Merci pour ces précisions ! Je pense avoir bien compris le truc. Par contre pour la date, quand je veux utiliser ton code il me dit (à raison) que calendar.png n'existe pas. Il n'y a pas de calendrier de base dans Yii ?
EDIT 2 : Pour une raison que j'ignore, tous les caractères de mon calendrier sont en japonais... Pourquoi ?
EDIT 3 : C'est réglé ! Par contre je n'ai pas de fonction "beforeSave" dans mon modèle...

Co-k-ine > Oui, pourquoi ?
0

#8 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 20 March 2012 - 12:50 PM

Bonjour,

C'est à toi de créer la fonction beforeSave dans ton model !

PS : Moi aussi je suis étudiant en informatique à annecy !
0

#9 User is offline   shizo971 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 13-February 11
  • Location:Guadeloupe

Posted 27 March 2012 - 08:21 PM

krkrkr, votre projet de conception d'un helpdesk est fort intéréssant :)
J'ai eu à en faire un aussi au cour de ma scolarité.
Je cherche justement à l'améliorer en y intégrant des utilisateurs récupérés depuis un LDAP et d'autres spécificités ^^

Parcontre, la configuration/compétence matérielle/logiciel sont à quels buts? :)
0

#10 User is offline   hicham regattasup 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 11-April 12

Posted 11 April 2012 - 01:03 PM

Bonjour
J'ai un ptit soucis, en fait j'ai travaillé avec gii pour generer mon application. Je voudrais dans une vue afficher le titre de l'id d'une clé etragere au lieu que juste l'id qui s'affiche.
Mes salutations.
0

#11 User is offline   bennouna 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,168
  • Joined: 05-January 12
  • Location:Morocco

Posted 11 April 2012 - 01:20 PM

Bonjour

Quote

Je voudrais dans une vue afficher le titre de l'id d'une clé etragere au lieu que juste l'id qui s'affiche.

Supposons que votre vue affiche les employés, que votre clé étrangère s'appelle departementId, et pointe que la table departement sur le champ id.

Si vous avez utilisé les commentaires appropriés dans votre SQL, Gii a certainement généré les relations nécessaires dans vos modèles :

Modèle "Employe", quelque chose comme :
'departement' => array(self::BELONGS_TO, 'Departement', 'departementId'),

Modèle "Departement", quelque chose comme :
'employes' => array(self::HAS_MANY, 'Employe', 'departementId'),

Pour votre vue d'employés, Gii a généré quelque chose comme
<?php echo $model->departementId; ?>

Il suffit de remplacer par
<?php echo $model->departement->nom; ?>
, ou autre champ adéquat

J'espère que c'est clair. Si vous êtes anglophone, je vous recommande les didacticiels de Larry Ullman (via la pages Tutorials, c'est là où j'ai personnellement rapidement pu démarrer correctement avec Yii.
0

#12 User is offline   hicham regattasup 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 11-April 12

Posted 11 April 2012 - 05:46 PM

Bonjour bennouna
voila le code ke j'ai rencontré
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'Idclt',
'nom',
'tel',
'adresse',
'gsm',
'solde',
'commentaire',
'idreg',
'idtype',
),
)); ?>

idreg , idtype sont des clés etrangeres
j'espere avoir une reponse de votre part
0

#13 User is offline   bennouna 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,168
  • Joined: 05-January 12
  • Location:Morocco

Posted 11 April 2012 - 06:06 PM

<?php $this->widget('zii.widgets.CDetailView', array(
	'data'=>$model,
	'attributes'=>array(
		'Idclt',
		'nom',
		'tel',
		'adresse',
		'gsm',
		'solde',
		'commentaire',
		array('name'=>'relation.champDesire'), // <- voilà à quoi ça ressemble
		…
	),
)); ?>

Est-ce que vos relations sont définies dans le modèle ?
Pour votre information, la question que vous posez est plutôt basique. Vous gagneriez beaucoup à consulter le guide de Yii et les tutoriels de Larry Ullman.
0

#14 User is offline   bennouna 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,168
  • Joined: 05-January 12
  • Location:Morocco

Posted 13 February 2013 - 07:10 AM

Bonjour Xaviera

Je ne sais pas à qui tu t'adresses, mais puisque je suis l'auteur du dernier post (presque 1 an…), je te demande d'être plus précise dans ta question :D

A++
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