Search the Community
Showing results for tags 'controlleur'.
-
Bonjour, Je suis actuellement en train de développer un module pour Prestashop 1.7.6.1. J'ai besoin d'appeler une fonction PHP via l'ajax pour modifier l'ordre des éléments à la volée. Pour créer la partie admin (qui renverra juste un JSON), je me suis basé sur le tuto suivant : https://devdocs.prestashop.com/1.7/modules/concepts/controllers/admin-controllers/ J'ai donc mon controller : <?php // /modules/parallaxeffect/controller/AjaxParallaxController.php namespace ParallaxEffect\Controller; use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController; class AjaxParallaxController extends FrameworkBundleAdminController{ public function changeOrder(){ return Tools::jsonEncode(['coucou']); } } J'ai ensuite configuré le PSR-4 : // /modules/parallaxeffect/composer.json { "name": "moi/parallaxeffect", "description": "Affiche un carrousel avec des éléments sur la page d'accueil", "autoload": { "psr-4": { "ParallaxEffect\\Controller\\": "controller/" } }, "config": { "prepend-autoloader": false }, "type": "prestashop-module" } Quand je suis, via l'invite de commande, dans le dossier de mon module, je fais la commande composer dumpautoload J'ai le message suivant : Si je fais la commande composer dumpautoload -o J'ai le message : Est-ce normal ? J'ai tout de même fini le tuto en créant le fichier de routes mais je n'ai pas de résultat probant ... # /modules/parallaxeffect/config/routes.yml changeOrder: path: parallaxeffect/changeorder methods: [GET] defaults: _controller: 'ParallaxEffect\Controller\AjaxParallaxController::changeOrder' Deuxième question : Comment je fais pour accèder à cette page via l'url ? Dans le tuto, ils mettent /admin-dev/modules/your-module/demo mais à quoi correspond /admin-dev/ ? Merci d'avance !!! Guillaume
- 3 replies
-
- admin
- controller
-
(and 6 more)
Tagged with:
-
Bonjour, J’ai un problème du contrôleur dans Back-office Lorsque je clique sur un bouton créer une formulaire doit m'affiche J’ai créé pour la formulaire un contrôleur, un model et une vue. Le message qui m'affiche: Not Found The requested URL /alcomdevis/Addformulaire.php was not found on this server. le fichier "Addformulaire.php" existe dans le dossier du module mais je ne sais pas pourquoi ce " not found on this server". le contenue de ce fichier: <?php require(dirname(__FILE__).'/config/config.inc.php'); ControllerFactory::getController('AddformulaireController')->run(); le contenue du modele "alcomdevis\models\admin\Addformulaire.php": <?php class Addformulaire extends ObjectModel { //On commence par définir nos propriétés (champs de notre table) public $nom_devis; public $id_devis; public $id_customer; public $statut_devis; public $date_validation_devis; //Parties renseignant sur les propriétés de chaque champs pour le Back office protected $fieldsRequired = array('nom_devis','id_devis','id_customer','statut_devis','date_validation_devis'); protected $fieldsValidate = array('nom_devis' => 'isName','id_devis' => 'isString', 'id_customer' => 'isString', 'statut_devis' => 'isName', 'date_validation_devis' =>'isDate'); protected $table = 'formulaire'; //On définit l'identifiant pour le back office protected $identifier = 'id_formulaire'; // La fonction getFields() nous permet de relier les propriétés avec la table // on pourra ainsi récupérer dans le Back Office nos champs très facilement public function getFields() { parent::validateFields(); $fields['nom_devis'] = pSQL($this->nom_devis); $fields['id_devis'] = (int)($this->id_devis); $fields['id_customer'] = (int)($this->id_customer); $fields['statut_devis'] = pSQL($this->statut_devis); $fields['titre'] = pSQL($this->titre); $fields['date_validation_devis'] = pSQL($this->date_validation_devis); return $fields; } //Méthode listing de la table public function listeFormulaire($id_customer=NULL) { if($id_customer!=NULL) { //On sélectionne toutes les lignes de la table formulaire et en même temps les champs concordant de la table customer $sql='select * from '._DB_PREFIX_.'formulaire FO INNER JOIN '._DB_PREFIX_.'customer CU ON FO.id_customer=CU.id_customer where FO.id_customer='.(int)($id_customer); } else { //On sélectionne toutes les lignes de la table formulaire et en même temps les champs concordant de la table customer $sql='select * from '._DB_PREFIX_.'formulaire FO INNER JOIN '._DB_PREFIX_.'customer CU ON FO.id_customer_formulaire=CU.id_customer'; } //Méthode pour la lecture dans la base $result=Db::getInstance()->execute($sql); //On retourne le résultat return $result; } //Méthode pour supprimer un ou tous les formulaires de la table public function deleteFormulaire($id_formulaire=NULL) { if($id_formulaire==NULL) { //On supprimer tous les forumlaires $sql='delete from '._DB_PREFIX_.'formulaire'; } else { //On supprime uniquement le forumlaire sélectionné $sql='delete from '._DB_PREFIX_.'formulaire where id_formulaire='.$id_formulaire; } //Méthode pour la lecture dans la base $result=Db::getInstance()->execute($sql); //On retourne le résultat return $result; } //Méthode pour insertion d'un formulaire dans la base de données depuis l'objet formulaire public function insertFormulaire($nom_devis,$id_devis,$id_customer,$statut_devis,$date_validation_devis) { $sql='insert into '._DB_PREFIX_.'formulaire (`id_devis`,`id_customer`,`statut_devis`,`date_validation_devis`) VALUES("'.$nom_devis.'","'.$id_devis.'","'.$id_customer.'","'.$statut_devis.'","'.$date_validation_devis.'")'; //Méthode pour la lecture dans la base $result=Db::getInstance()->execute($sql); //On retourne le résultat return $result; } /*Méthode pour récupére le nom et prénom d'un client suivant son ID client * On en a besoin dans la page du Back office */ public function nom_client($id_customer) { $res='select firstname,lastname from '._DB_PREFIX_.'customer where id_customer='.$id_customer; //Méthode pour la lecture dans la base $result=Db::getInstance()->getRow($res); //On retourne le résultat return $result; } //Méthode crée pour insérer le forumlaire envoyé en devis public function ajouter_devis($nom_devis,$id_devis,$id_customer,$statut_devis,$date_validation_devis) { //On insère le devis dans la table devis $sql='insert into '._DB_PREFIX_.'devis (id_devis,nom_devis,statut_devis,date_validation_devis,date_devis,id_customer,id_admin,id_panier,id_produit) VALUES ('.$id_devis.','.$nom_devis.','.$statut_devis.','.$date_validation_devis.',"",'.$id_customer.',"","","");'; $result=Db::getInstance()->execute($sql); //On récupère l'ID devis $ID=Db::getInstance()->Insert_ID(); //On insère dans la table devis_lang $sqll='insert into '._DB_PREFIX_.'devis_lang (id_devis,id_lang,statut_devis,date_devis,id_customer) VALUES('.$ID.',2,'.$statut_devis.',"",'.$desc.'","'.$id_customer.')'; $result2=Db::getInstance()->execute($sqll); } } le contenue du contrôleur: <?php class AddformulaireController extends ModuleAdminController { public $php_self = '/models/admin/Addformulaire.php'; public $ssl = true; public function postProcess() { //On vérifie le bouton submit du formulaire if(Tools::isSubmit('bouton')) { // On va commencer en premier par récupérer l'id admin avec la variable cookie // et vérifier que la personnes est bien loggée global $cookie; if(!isset($cookie->id_employee)) { $message='Aucun client loggé'; } else { $errors=array(); $customer=$cookie->id_employee; //On récupère les valeurs du formulaire $nom_devis=Tools::getValue('nom'); $id_devis=Tools::getValue('ref'); $id_customer=Tools::getValue('client'); $statut_devis=Tools::getValue('statut'); $date_validation_devis=Tools::getValue('date_liv'); //On va vérifier les champs obligatoires if($nom_devis==''||$id_customer==''||$statut_devis=='') { if($nom_devis==''){array_push($errors,'S\'il vous plaît n\'oubliez pas de mettre un nom du devis<br />');} if($id_customer==''){array_push($errors,'S\'il vous plaît n\'oubliez pas de mettre un nom du client<br />');} if($statut_devis==''){array_push($errors,'S\'il vous plaît n\'oubliez pas de mettre un statut du devis<br />');} } else { //Les champs sont remplis, on va faire le traitement des données. //On utilise la méthode insertFormulaire() pour insérer le formulaire: Formulaire::insertFormulaire($nom_devis,$id_devis,$id_customer,$statut_devis,$date_validation_devis); $message='Votre demande a bien été envoyée'; } } //On envoie le message si il existe: if(isset($message))self::$smarty->assign('message',$message); if(isset($errors))self::$smarty->assign('erreurs',$errors); } } public function process() { parent::process(); $this->postProcess(); } public function displayContent() { parent::displayContent(); self::$smarty->display(_PS_THEME_DIR_.'Addformulaire.tpl'); } } je crois que la faute vient de cette fonction au niveau du bouton creér public function initToolbar() { $this->toolbar_btn = array(); $this->toolbar_btn['new'] = array('desc' => $this->l('Nauveau devis'), 'href' => '/alcomdevis/Addformulaire.php'); $this->toolbar_btn['cancel'] = array('desc' => $this->l('Retour'), 'href' =>'http://localhost/prestashop/admin3231/index.php?controller=AdminHome&token=ad61f286e2a655716ce175cf514557cd'); } Merci d'avance