All times are UTC



 [ 6 posts ] 
Author Message
 Post subject: Utilisation de $html->selectTag
New postPosted: Wed Apr 25, 2007 9:59 am 
Offline
Arrivant

Joined: Mon Apr 23, 2007 10:36 am
Posts: 7
Je reviens désormais avec une nouvelle question, je désire mettre en place une liste déroulante dans mon formulaire. J'ai regardé dans le helper html et l'on trouve le $this->selectTag, le helper m'indique ceci :
Quote:
/**
* Returns a formatted SELECT element.
*
* @param string $fieldName Name attribute of the SELECT
* @param array $optionElements Array of the OPTION elements (as 'value'=>'Text' pairs) to be used in the SELECT element
* @param mixed $selected Selected option
* @param array $selectAttr Array of HTML options for the opening SELECT element
* @param array $optionAttr Array of HTML options for the enclosed OPTION elements
* @param boolean $show_empty If true, the empty select option is shown
* @param boolean $return Whether this method should return a value
* @return string Formatted SELECT element
* @access public
*/
function selectTag($fieldName, $optionElements, $selected = null, $selectAttr = array(), $optionAttr = null, $showEmpty = true, $return = false) {
$this->setFormTag($fieldName);
if ($this->tagIsInvalid($this->model, $this->field)) {
if (isset($selectAttr['class']) && trim($selectAttr['class']) != "") {
$selectAttr['class'] .= ' form_error';
} else {
$selectAttr['class'] = 'form_error';
}
}
if (!isset($selectAttr['id'])) {
$selectAttr['id'] = $this->model . Inflector::camelize($this->field);
}

if (!is_array($optionElements)) {
return null;
}

if (!isset($selected)) {
$selected = $this->tagValue($fieldName);
}

if (isset($selectAttr) && array_key_exists("multiple", $selectAttr)) {
$select[] = sprintf($this->tags['selectmultiplestart'], $this->model, $this->field, $this->parseHtmlOptions($selectAttr));
} else {
$select[] = sprintf($this->tags['selectstart'], $this->model, $this->field, $this->parseHtmlOptions($selectAttr));
}

if ($showEmpty == true) {
$select[] = sprintf($this->tags['selectempty'], $this->parseHtmlOptions($optionAttr));
}

foreach($optionElements as $name => $title) {
$optionsHere = $optionAttr;

if (($selected != null) && ($selected == $name)) {
$optionsHere['selected'] = 'selected';
} else if(is_array($selected) && in_array($name, $selected)) {
$optionsHere['selected'] = 'selected';
}

$select[] = sprintf($this->tags['selectoption'], $name, $this->parseHtmlOptions($optionsHere), h($title));
}

$select[] = sprintf($this->tags['selectend']);
return $this->output(implode("\n", $select), $return);
}


A quoi correspondent exactement les variables $fieldName, $optionElements, $selectAttr, $optionAttr, $show_empty et $return.

Car pour l'instant j'arrive à afficher du texte dans ma liste de sélection, mais je n'arrive pas à définir les autres variables, je n'arrive pas à comprendre exactement leur utilité meme si je sais qu'elles en ont une importante.
En plus je dois croiser 2 tables de ma base de données ensemble et je ne sais pas encore comment je vais m'y prendre, ça viendra après


 
 Profile  
 
 Post subject:
New postPosted: Wed Apr 25, 2007 10:04 am 
Offline
Modérateur

Joined: Thu Mar 15, 2007 8:04 am
Posts: 39
Location: Orléans
Eh bien, $fieldName, c'est le nom du champ. Il doit être au format modelName/champName

$optionElements, c'est les éléments de ta liste. Si tu arrive à les avoir, je suppose que tu a compris l'intéret de cet attribut.

$selectAttr, c'est le nom de l'élément qui sera sélectionné par défaut. Si tu n'en met aucun, c'est l'élément vide affiché par défaut qui sera sélectionné.

$show_empty désactivera cet élément vide affiché par défaut, et affichera donc le premier élément de la liste par défaut.

Le $return te permet, si défini à true, de passer de l'html dans tes attributs sans qu'il ne soit formaté au format texte.

Note : j'ai splitté le topic. Crée en un nouveau lorsque c'est une nouvelle question.

_________________
Il faut aimer les autres, non pour soi, mais pour eux - Proverbe Espagnol
blog référencement - éditeur dmoz


 
 Profile  
 
 Post subject: Re: Utilisation de $html->selectTag
New postPosted: Thu Apr 26, 2007 8:00 am 
Offline
Arrivant

Joined: Mon Apr 23, 2007 10:36 am
Posts: 7
Merci pour cette réponse, ça m'a bien aidé puisque j'ai pu mettre en place la liste dans mon formulaire.

Cependant, les valeurs de ma liste sont des valeurs issues de ma BDD, dans une table (table 2). A coté de cette table j'ai une table (table1) qui rassemble un ensemble de données que j'affiche dans une fiche bilan. J'ai un formulaire qui permet de rentrer toutes les informations dans ma table1, en plus je souhaiterais que la liste créée précédemment avec le selectTag apparraisse dans ce formulaire et que lorsque je valide, l'élément sélectionné de ma liste soit intégré dans ma table1.
Donc il y a croisement entre deux tables. J'ai réussi à faire apparaitre ma liste dans mon formulaire de saisie pour remplir ma table1, mais comment faire pour insérer l'élément sélectionné de la liste déroulante dans ma variable de la table1 prévue à cet effet, serait ce là ou le scallfolding fait son entrée ?

Bon j'avoue que je m'explique mal donc petit bilan :


Table 1
-> variables de mon formulaire dont une qui doit recevoir la valeur d'un élément de la liste

Table 2
-> éléments de ma liste selectTag ( 'id1' 'valeur1', 'id2' 'valeur2', 'id3' 'valeur3', 'id4' 'valeur4' )

vais-je être compris ?...


 
 Profile  
 
 Post subject: Re: Utilisation de $html->selectTag
New postPosted: Thu Apr 26, 2007 9:08 am 
Offline
Arrivant

Joined: Mon Apr 23, 2007 10:36 am
Posts: 7
MAJ de mon post.

J'ai finallement réussi à croiser les 2 tables en utilisant la variable $hasOne et la variable $belongsTo dans chacun de mes 2 modèles. Sauf que lorsque j'affiche ma fiche descriptive, cake me retourne non pas la valeur de ma liste sélectionnée mais son id.
En gros il faudrait que je dise à ma vue d'afficher la valeur de la table 2 qui correspond à l'id enregistré dans ma table 1.


 
 Profile  
 
 Post subject:
New postPosted: Thu Apr 26, 2007 9:27 am 
Offline
Modérateur

Joined: Thu Mar 15, 2007 8:04 am
Posts: 39
Location: Orléans
Dans ton tableau des valeurs, tu a :

Code:
array(
0 => 'valeur',
1 => 'valeur',
)


Il te faudrait pour ne pas avoir l'identifiant de retourné :
Code:
array(
'valeur' => 'valeur',
'valeur' => 'valeur',
)

_________________
Il faut aimer les autres, non pour soi, mais pour eux - Proverbe Espagnol
blog référencement - éditeur dmoz


 
 Profile  
 
 Post subject: Re: Utilisation de $html->selectTag
New postPosted: Thu Apr 26, 2007 10:29 am 
Offline
Arrivant

Joined: Mon Apr 23, 2007 10:36 am
Posts: 7
Alors je viens d'essayer en modifiant mon generate liste:
Avant j'avais cette fonction dans mon modele :

Quote:
function selectTag()
{
return $this->generateList(null, 'id ASC', null, '{n}.Chiffreaffaire.id', '{n}.Chiffreaffaire.valeur');
}


et donc j'ai modifié en :

Quote:
function selectTag()
{
return $this->generateList(null, 'id ASC', null, '{n}.Chiffreaffaire.valeur', '{n}.Chiffreaffaire.valeur');
}


Mais ça ne change pas, il m'affiche toujours l'ID, ça doit surement venir d'ailleur, soit ma vue soit mon controller ?


 
 Profile  
 
Display posts from previous:  Sort by  
 [ 6 posts ] 



All times are UTC


Who is online

Users browsing this forum: Alexa [Bot], MSN [Bot] and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Jump to: