- 1
[Opened] Ajout de contrôles dynamiquement et jIFormsDatasource
Posted by PomCompot on 06/15/2009 14:35
Bonjour,
J'essaie actuellement d'ajouter à un formulaire existant de nouveaux contrôles (création d'une interface pour filtrer un tableau selon des critères à la Trac http://trac.edgewall.org/query).
Dans mon contrôleur, je crée un nouveau contrôle :
$newControl = new jFormsControlMenulist('id');
Ainsi qu'une nouvelle data source pour ce contrôle :
$dataSource = new ListeDS($formulaireCriteresFiltre->id());
Que j'ajoute ensuite au contrôle :
$newControl->datasource = $dataSource;
Que j'ajoute au formulaire :
$formulaireCriteresFiltre->addControl($newControl);
Tout ça devrait marcher, mais j'ai un problème sur l'importation de la classe définissant mon data source. Si je mets ça en haut de mon contrôleur :
jClasses::inc('monModule~ListeDS');
Je me prends cette erreur :
Fatal error: Interface 'jIFormsDatasource' not found
Si je ne mets pas l'include, ça ne marche pas car le contrôleur ne trouve pas ListeDS.
Pour info, voici la déclaration de mon data source :
class ListeDS implements jIFormsDatasource { protected $formId = 0; protected $data = array(); function __construct($id) { ... } public function getData($form) { return ($this->data); } public function getLabel($key) { if(isset($this->data[$key])) return $this->data[$key]; else return null; } }
J'ai également essayé ça en en-tête du data source sans succès :
jClasses::inc('jelix~forms/jIFormsDatasource');
Une idée ? Merci d'avance.
[Opened] Re: Ajout de contrôles dynamiquement et jIFormsDatasource
Posted by foxmask on 06/15/2009 21:25
bonsoir
je n'ai jamais utilisé jIFormsDataSource que dans ce cadre là
j'ai parcouru les sources et il me semble que l'interface n'est appelable que depuis jFormsBase.
extrait de mon cache "compilé" :
class cForm_hfnuadmin_Jx_config extends jFormsBase { ... jClasses::inc('hfnuadmin~themes'); $datasource = new themes($this->id()); if ($datasource instanceof jIFormsDatasource){$ctrl->datasource=$datasource;} else{$ctrl->datasource=new jFormsStaticDatasource();} $this->addControl($ctrl);
themes est mon DS et par ailleurs jFormsBase est la seule classe procédant à un require(JELIX_LIB_PATH.'forms/jFormsControl.class.php');
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Re: Ajout de contrôles dynamiquement et jIFormsDatasource
Posted by laurentj on 06/16/2009 10:39
Il suffit d'inclure le fichier forms/jFormsDatasource.class.php tout simplement, non ?
Et puis de toute façon, à partir du moment où tu appelle jForms, l'interface est incluse automatiquement. Et il me semble que tu es censé faire appel à jForms puisque tu dois récupérer ton formulaire, avant d'ajouter des contrôles. Aussi je ne vois pas pourquoi tu aurais ce problème.
[Opened] Re: Ajout de contrôles dynamiquement et jIFormsDatasource
Posted by PomCompot on 06/16/2009 12:00
C'est ce que je pensais. Je ne me pose jamais la question d'habitude, mais là ça ne fonctionne pas. Si je fais un include du fichier directement, je me fais jeter car il considère ça comme une redéfinition de classes PHP existantes.
Je vais tenter d'isoler un jeu d'essai réduit concernant le problème pour pouvoir vous le transmettre.
- 1