PDK et développement framework
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
J'ai installé le PDK pour créer un module.
Pour l'instant , tout est bon. J'ai accés à la sandbox et à la doc en ligne
Questions:
- Peux t'on duppliquer la sand box (et son répertoire) pour se faire rapidement un sqelette de nouveau module ?
-Dans les objets pour les formulaires, est il possible d'avoir une liste arborescente avec sélection variées dessus (cache à cocher,...) Il me semble que ça manque au framework ce type d'objets que l'on trouve désormais de partout.
Est il possible de générer un menu dynamiquement et de le mettre dans une zone de menu (container graphique) créé vide par ailleurs ?
J'aurai surement d'autres questions au fur et à mesure du développement.
Merci.
Testeur V5
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
1. Oui tu peux, mais il faudra changer les noms. Tu peux t'aider de la documentation : http://phpboost.com/wiki/creer-un-module
2. Tu pourrais me donner un exemple s'il te plait ? Je ne vois pas trop ...
3. Tu veux générer quel type de menu ? Nous sommes actuellement entrain de travailler sur la refonte des boutons ajout/éditer/suppression en menu pour la 4.1. On pourra donc faire ça plus simplement dans la 4.1

N'hésites pas pour les questions !
ReidLos
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Point 2: Une arborescence genre gestion de fichiers windows par exemple. C'est à dire plusieurs niveaux arborescents que tu peux sélectionner simultanément avec une case à cocher par exemple.
Point 3: Pour le menu, je veux pouvoir générer un menu dynamique déroulant qui va dépendre du profil de la personne connectée ou de certaines données issues de la BDD et donc proposer + ou moins de choix. Je veux ensuite pouvoir mettre ce menu dynamique dans une zone de visu particulière ( par exemple le sous header ).
Sinon je vais partir de la SANDBOX que je vais renommer pour faire un module nouveau , car je voudrais éviter de refaire tous les fichiers à la main.
Merci en tout cas de ton aide.
Testeur V5
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Je me suis inspiré du module dictionary pour le fichier setup.
Le module s'installe bien (copie des fichiers sur le disque, apparition dans la liste des modules). Par contre aucune des 2 tables que je veux créer n'apparait dans la base SQL ???
Je maitrise pas vraiment le framework ( la doc est un peu légère pour un débutant). Je suspecte un nom de table incorrecte car je ne vois pas comment la constante PREFIX utilisée là est initialisée ?
self::$regate_contact_table = PREFIX . 'regate_contact';
self::$regate_pointGPS_table = PREFIX . 'regate_pointGPS';
Il se peut que ça vienne aussi des types de données de la table, car en SQL, les variables s'appellent différemment (VARCHAR au lieu de string) et sont en majuscules normalement. Ici elles sont en minuscules en plus. Ou puis je trouver la table de correspondance entre la syntaxe du framework et la syntaxe de mysql ?
Voici le code simplifié du module setup (j'ai supprimé quelques champs des tables pour éviter de surcharger)
Code PHP :
<?php /*################################################## * RegateSetup.class.php * ------------------- * begin : September 13 2013 * copyright : (C) 2013 * * * ################################################### * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ###################################################*/ // Cette classe permet de gérer les opérations spécifiques lors de l'installation, upgrade ou désinstallation d'un module class RegateSetup extends DefaultModuleSetup private static $regate_contact_table; private static $regate_pointGPS_table; public static function __static() { self::$regate_contact_table = PREFIX . 'regate_contact'; self::$regate_pointGPS_table = PREFIX . 'regate_pointGPS'; } public function __construct() { $this->querier = PersistenceContext::get_querier(); } // Installation initiale du module régate public function install() { $this->drop_tables(); $this->create_tables(); } // désinstalle le module régate de PHPBOOST public function uninstall() { $this->drop_tables(); $this->delete_configuration(); } // Efface les tables régate de la base de données private function drop_tables() { PersistenceContext::get_dbms_utils()->drop(array(self::$regate_contact_table, self::$regate_pointGPS_table)); } private function delete_configuration() { ConfigManager::delete('regate'); } private function create_tables() { $this->create_regate_contact_table(); $this->create_regate_pointGPS_table(); } public function upgrade($installed_version) { return '1.0.0'; } // création de la table des contacts private function create_regate_contact_table() { $fields = array( 'id' => array('type' => 'integer', 'length' => 11, 'autoincrement' => true, 'notnull' => 1), 'nom' => array('type' => 'string', 'length' => 255, 'default' => "''"), 'actif' => array('type' => 'boolean', 'length' => 1, 'notnull' => 1, 'default' => 0), 'description' => array('type' => 'text', 'length' => 65000, 'notnull' => 1) ); $options = array( 'primary' => array('id') ); PersistenceContext::get_dbms_utils()->create_table(self::$regate_contact_table, $fields, $options); } // création de la table des points GPS private function create_regate_pointGPS_table() { $fields = array( 'id' => array('type' => 'integer', 'length' => 11, 'autoincrement' => true, 'notnull' => 1), 'idcontact' => array('type' => 'integer', 'length' => 11, 'notnull' => 1, 'default' => 0), 'longitude' => array('type' => 'float', 'length' => 11, 'notnull' => 1, 'default' => 0), 'marqueur' => array('type' => 'integer', 'length' => 11, 'notnull' => 1, 'default' => 0) ); $options = array( 'primary' => array('id') ); PersistenceContext::get_dbms_utils()->create_table(self::$regate_pointGPS_table, $fields, $options); } } ?>
Édité par forum6691 Le 24/09/2013 à 06h22
Testeur V5
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Il est vrai qu'il y a des manques dans la documentation de ce point de vue là. On va essayer d'y remédier.
Dans l'extrait du fichier que tu as donné, il manque une accolade ouvrante ({) après la déclaration de la classe RegateSetup (l.30).
A part ça le reste me paraît correct. Est-ce qu'avec ça, sans les champs supplémentaires ça fonctionne ?
Ton module s'appelle bien regate ou Regate ?
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
erreur de base§. Il faut que j'installe me module d'eclipse pour le PHP afin d'éviter celà.
Pour l'instant je bosse avec notepad ++ et j'ai pas vu cette erreur.
Le module s’appelle regate en minuscule ( c'est le nom du répertoire dans l'archive zip)
Testeur V5
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Pas d'erreur dans la console d'erreur en plus.
J'ai mis des commandes de debug au milieu du code
Debug::dump($regate_contact_table);
Debug::dump($regate_pointGPS_table);
Debug::dump($fields);
Debug::dump($options);
Mais ou trouve t'on la sortie de ce debug. rien à l'écran, ni dans la console de gestion des erreurs ?
Édité par forum6691 Le 24/09/2013 à 20h48
Testeur V5
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Teki Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Teki
- Inscrit le : 17/02/2013
Essaye un :
Code PHP :
private $querier;
Après tes
Code PHP :
private static $regate_contact_table; private static $regate_pointGPS_table;
Mais tu ne l'utilises que dans le __construct, plus après :
"Je suis un mec simple, y'a pas plus compliqué que moi"
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
J'ai recopié exactement le code de dictionnary en supprimant seulement les ajouts de data dans les tables.
Je pesume que la fonction public static function __static()
{
self::$regate_contact_table = PREFIX . 'regate_contact';
self::$regate_pointGPS_table = PREFIX . 'regate_pointGPS';
}
est appelée par le système puis qu'ensuite je me sert de ces 2 variables pour créer chaque table ?
Idem pour le querrier qui est initialisé ici
public function __construct()
{
$this->querier = PersistenceContext::get_querier();
}
Suis je bon dans mon raisonnement ?
Testeur V5
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
ReidLos :
Utilises la fonction stop au lieu de dump si tu veux arrêter le script 

Reidloss à quoi sert alors le dump ? Ou retrouve t'on ces sorties dumpées ?
Testeur V5
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
forum6691 :
Reidloss à quoi sert alors le dump ? Ou retrouve t'on ces sorties dumpées ?
ReidLos :
Utilises la fonction stop au lieu de dump si tu veux arrêter le script 

Reidloss à quoi sert alors le dump ? Ou retrouve t'on ces sorties dumpées ?
Bonsoir,
un dump affiche ce que contient la variable mais en aucun cas n'arrête le script.
Normalement le dump s'affiche sur la page du script.
Cordialement, janus57
Édité par janus57 Le 24/09/2013 à 21h28
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Je vais regarder de ce coté là
Édité par forum6691 Le 24/09/2013 à 21h36
Testeur V5
Teki Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre Teki
- Inscrit le : 17/02/2013
Citation :
public function __construct()
{
$this->querier = PersistenceContext::get_querier();
}
Suis je bon dans mon raisonnement ?
{
$this->querier = PersistenceContext::get_querier();
}
Suis je bon dans mon raisonnement ?
Oui mais là l'attribut querier n'est pas déclaré dans ta classe.
Essaye ce que je t'ai montré au dessus.
"Je suis un mec simple, y'a pas plus compliqué que moi"
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie