Secretuser Posted October 6, 2014 Share Posted October 6, 2014 Salut à tous ! Bon voilà j'ai lu la documentation de prestashop en large et en travers mais tout n'est pas très clair à mes yeux, et de fait j'ai énormément de questions. 1) Quelle est la différence entre étendre une classe Controller à "AdminController" et "ModuleAdminController" ? 2) J'ai une table "Look" créée par moi, une table "LookProduct" créée par moi et la table "Product" déjà intégré dans PS. La table LookProduct contient un id_look et un id_product tous deux en clés étrangères de leurs tables respectives, ainsi que d'autres champs... Je crée un AdminLookController qui me rend la liste de mes looks avec la fonction renderList qui récupère donc apparemment les champs définies dans ma classe LookCore qui elle même récupère les champs de ma base de données. Mais j'aimerai aussi récupérer les champs de la table LookProduct auquel Look est associé. Comment faire ? Actuellement LookCore ressemble à ça : public static $definition = array( 'table' => 'look', 'primary' => 'id_look', 'fields' => array( 'name' => array( 'type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 64 ) ), ); La fonction renderList du AdminLookController me rend bien la liste des Looks avec ce code: public function renderList() { return parent::renderList(); } Il me faudrait juste les champs de ma table LookProduct... 3) A quoi sert protected $webserviceParameters = array( tout un tas de champs blablabla) ? 4) Imaginons que je veux créer un formulaire complètement personnalisé pour la fonction renderForm de AdminLookController...Commment dois-je m'y prendre ? Où placer le template .tpl personnalisé ? Comment appeler ce template depuis la fonction renderForm ? j'ai vu des fonctions tel que setTemplate ou display(un template), quelle est la différence ? 5) Donc imaginons que j'arrive à créer ce template personnalisé et le rendre à l'écran... Pour passer des variables dans ce template depuis ma fonction renderForm, comment dois-je faire ? Est-ce que je dois passer par les $smarty->assign ? Quelle est la différence entre $smarty->assign et $this->context->smarty->assign ? Votre aide sera fort apprécié pour un jeune développeur en détresse ! Merci beaucoup Link to comment Share on other sites More sharing options...
J. Danse Posted October 6, 2014 Share Posted October 6, 2014 Salut à tous ! Bonsoir, 1) Quelle est la différence entre étendre une classe Controller à "AdminController" et "ModuleAdminController" ? La première classe est associée à un controller du Back Office. La seconde, quant à elle, est en fait une classe étendue de AdminController et est un controller de Back Office associé à un module. Dans votre cas, ce sera donc cette classe qu'il faudra étendre. 2) [...] Mais j'aimerai aussi récupérer les champs de la table LookProduct auquel Look est associé. Comment faire ? Vous pouvez réaliser une jointure et sélection spécifique ; voyez du côté de AdminProducts, qui réalise ce traitement à partir d'ici: https://github.com/PrestaShop/PrestaShop/blob/1.6/controllers/admin/AdminProductsController.php#L169 3) A quoi sert protected $webserviceParameters = array( tout un tas de champs blablabla) ? A rien, du moins ce tableau ne vous est pas nécessaire. Ceci est pour l'utilisation des Webservices et aucunes nouvelles ressources n'est prise en compte actuellement. 4) Imaginons que je veux créer un formulaire complètement personnalisé pour la fonction renderForm de AdminLookController...Commment dois-je m'y prendre ? Tout d'abord, êtes vous sur que votre besoin ne peut pas être couvert par l'utilisation d'un HelperForm, même étendu (sous entendu, implémentant des champs spécifiques propres à votre module) ? 5) [...] Quelle est la différence entre $smarty->assign et $this->context->smarty->assign ? Tout et rien. En fait, pour utiliser $smarty->assign, vous devrez avoir global $smarty; dans votre méthode et dès lors utiliser les globales qui sont dépréciées. En 1.5 et 1.6, nous utilisons le contexte. Link to comment Share on other sites More sharing options...
Secretuser Posted October 7, 2014 Author Share Posted October 7, 2014 (edited) Ok merci pour ces précisions. J'ai donc réussi à faire cette jointure et récupérer le champ (Position X) de la table jointe comme en témoigne l'image ci-dessous: Cependant, dans la page de modification d'un Look (qui si je comprends bien est généré par la méthode renderForm de ma classe AdminLookController), je peux afficher un champ Position X, mais je n'arrive pas à récupérer la valeur enregistrée dans la BDD. Voici le code de la méthode renderForm: public function renderForm() { if (isset ($_GET['updatelook'])) { $title="Modifier look"; } else { $title="Ajouter look"; } $this->fields_form = array( 'legend' => array( 'title' => $this->l($title), ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Nom'), 'name' => 'name', ), array( 'type' => 'text', 'label' => $this->l('Position X'), 'name' => 'position_x', ), ), 'submit' => array( 'title' => $this->l('Save'), 'class' => 'button' ) ); return parent::renderForm(); } J'ai essayé de remettre la requête de jointure dans la méthode renderForm au cas où mais ça n'aide pas. Comment récupérer la valeur position_x dans cette méthode renderForm ? Edited October 7, 2014 by Secretuser (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted October 7, 2014 Share Posted October 7, 2014 position_x est défini comme champ de la table "look", si je ne me trompe pas ? Link to comment Share on other sites More sharing options...
Secretuser Posted October 7, 2014 Author Share Posted October 7, 2014 Position_x est un champ de la table LookProduct qui contient un id_look et un id_product (relation 0,N - 0,N), d'où la jointure nécessaire entre la table Look et la table LookProduct. Link to comment Share on other sites More sharing options...
Secretuser Posted October 7, 2014 Author Share Posted October 7, 2014 Ha j'ai réussi en découvrant la fonction $this->fields_value. Je vais continuer à creuser. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now