Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu]Créer un MenuList dans le code et le remplir...

Posted by dantahoua on 03/30/2011 23:19

Question stupide mais j'essaye en vain de remplir une drop down liste que je génère dans mon code. Je ne peux pas la mettre dans le xml du form car ça création dépend d'autre paramètres... C'est dans jcommunity et ce code se trouve dans un listener onjauthdbAdminEditCreate($event)

$usertypeDao = jDao::get('jcommunity~community_user_type');
$arUserType = $usertypeDao->findAll();
<code>
            foreach($arUserType as $usertype)
                $arut[$usertype->literal_id] = $usertype->title;
            
            $menulistctrl = new jFormsControlMenulist('fk_user_type_literal_id');
            $menulistctrl->required = true;
            $form->addControl($menulistctrl);
            $form->getControl('fk_user_type_literal_id')->datasource->data = $arut;
</code>

J'obtiens l'erreur suivante: Fatal error: Call to undefined method stdClass::getData() in /Volumes/Dev/www/svn/Jelix/app_ejCryo_bourse/dev/trunk/lib/jelix/forms/jFormsBuilderHtml.class.php on line 651 La dernière ligne du trace étant : 9 1.5370 4382884 jFormsBuilderHtml->fillSelect( ?, ? ) ../jFormsBuilderHtml.class.php:705

Notez qu'avec des input normaux je n'ai pas de pb...

  [Opened] Créer un MenuList dans le code et le remplir...

Reply #1 Posted by laurentj on 03/31/2011 13:54

Bonjour,

Je ne peux pas la mettre dans le xml du form car ça création dépend d'autre paramètres

Tu pourrais très bien le déclarer dans le xml, et l'activer/desactiver en fonction des besoins (avec la methode deactivate sur ton objet formulaire)

J'obtiens l'erreur suivante: Fatal error: Call to undefined method stdClass::getData()

Tu as oublié d'assigner un objet datasource sur la propriété datasource (j'avoue qu'il y a des petits manques sur l'api)

$menulistctrl->datasource = new jFormsStaticDatasource();
$menulistctrl->datasource->data = $arut;

// pas besoin du getControl

Ou mieux, puisque tu utilises un dao, ton code complet serait :

$menulistctrl = new jFormsControlMenulist('fk_user_type_literal_id');
$menulistctrl->datasource = new jFormsDaoDatasource('jcommunity~community_user_type' , 'findAll' , 'title', 'literal_id');

Et c'est tout (pas de manip dao etc)

  [Opened] Créer un MenuList dans le code et le remplir...

Reply #2 Posted by dantahoua on 03/31/2011 13:59

Hey merci Laurent! Au final j'ai contourner mon problème avec le "deactivate" mais je me disais qu'il doit bien y avoir une façon de faire avec les DAO!! Impossible de trouver cette info dans la doc ou l'api, donc merci pour cette info, c'est quand même vraiment pratique!

 
Page
  1. Créer un MenuList dans le code et le remplir...