liste doctrine en fonction de l'objet
salut a tous !!! :)
Voici mon problème.
J'ai une table article ->id, prix, titre...
J'ai une table size -> id, name
J'ai une table article_has_size -> article_id, size_id
Donc un article peut avoir plusieur taille et une taille peut etre dans plusieur article[m:m]
J'ai bien crée ma bdd en écrivant toute les relations
[ j'ai mis :
Code:
this->widgetSchema['size_list']->setOption('renderer_class', 'sfWidgetFormSelectDoubleList');
dans la config de mon form "article" qui me permet donc de sélectionner les tailles dispo pr mon article]
Tout marche bien.
La ou je coince c'est que j'ai besoin de créée un "petit formulaire" avec une liste deroulante des "size" dispo pour l'article que je visionne.
Dc ds l'action "show" de mon article je met:
Code:
1 2 3 4 5 6 7 8 9 10
|
public function executeShow(sfWebRequest $request)
{
$this->article =$article= Doctrine_Core::getTable('article')->find(array($request->getParameter('id')));
$this->form = new commandeForm($this->article);
$this->forward404Unless($this->article);
} |
Et pour la configuration de mon formulaire
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| <?php
class CommandeForm extends ArticleForm
{
public function configure()
{
$this->setWidgets(array(
'size_list' => new sfWidgetFormDoctrineChoice(array('multiple'=>false, 'model'=> 'Size')),
'quantity' => new sfWidgetFormChoice(array(
'choices' => self::generateTwoCharsRange(1,50),
'expanded' => false,
)),
));
$this->widgetSchema->setNameFormat('commande[%s]');
$this->setValidators(array(
'size_list' => new sfValidatorNumber(array('required' => true)),
'quantity' => new sfValidatorNumber(array('required' => true)),
));
}
static function generateTwoCharsRange($start, $stop) {
$results = array();
for ($i = $start; $i <= $stop; $i++) {
$results[$i] = sprintf('%02d', $i);
} return $results;
}
} |
Maintenant j'affiche la liste de toute ma table "size" mais je ne vois pas comment charger uniquement les "size" lier a mon article....
Je pense que sa doit etre simple ... mais je connais pas l'astuce...
Merci bien :P