mynotore Posted April 7, 2015 Share Posted April 7, 2015 Je réalise un module avec la création d'une nouvelle table lors de son installation. Une nouvelle entrée dans le menu de l'admin permet de gérer ces données. Pas de soucis de ce côté là, ni pour lister le contenu de la table via la fonction renderList() de mon controller (modules/monmodule/controlles/admin/AdminMonModuleController.php).Lorsque j'édite un champ en cliquant sur "Modifier" j'arrive au formulaire de modification mais les champs sont vides. J'utilise renderForm() pour générer le formulaire mais je ne comprends pas comment je peux récupérer les valeurs.A priori c'est lorsqu'on crée l'objet $obj = $this->loadObject(true).Sauf qu'il ne semble pas contenir les données que je veux.Quel est la bonne méthodologie pour arriver à mes fins?J'utilise Prestashop 1.6.0.11 Link to comment Share on other sites More sharing options...
xmatox Posted April 7, 2015 Share Posted April 7, 2015 Bonjour, Dans ses cas là le mieux est quand même que tu mettes ce que tu à mis dans renderForm pour qu'on puisse t'aider et voir ou ça cloche voilà quand même un exemple standart : public function renderForm() { if (!($obj = $this->loadObject(true))) return; $this->fields_form = array( 'legend' => array( 'title' => $this->l('My title'), ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Title :'), 'name' => 'name', 'lang' => true, 'size' => 50 ), array( 'type' => 'hidden', 'label' => $this->l('Title :'), 'name' => 'position', 'size' => 50 ), array( 'type' => 'hidden', 'name' => 'active', ), ), 'submit' => array( 'title' => $this->l('Save'), 'class' => 'button' ) ); return parent::renderForm(); } Link to comment Share on other sites More sharing options...
mynotore Posted April 7, 2015 Author Share Posted April 7, 2015 public function renderForm() { $this->fields_form = array( 'legend' => array( 'title' => $this->l('Modifier une tranche horaire'), 'image' => '../img/admin/time.gif' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l("Heure ouverture:"), 'name' => 'hour_begin', 'required' => true, 'hint' => sprintf($this->l('Exemple : 18:00:00')), ), array( 'type' => 'text', 'label' => $this->l('Heure fermeture:'), 'name' => 'hour_end', 'required' => true, 'hint' => sprintf($this->l('Exemple : 23:30:00')), ) ), 'submit' => array( 'title' => $this->l('Save'), ) ); if (!($obj = $this->loadObject(true))) return; //le code suivant génère des Undefined property: Mydelivery::$hour_begin /* foreach($this->fields_form["input"] as $inputfield){ $this->fields_value[$inputfield["name"]] = $obj->$inputfield["name"]; } */ return parent::renderForm(); } Link to comment Share on other sites More sharing options...
xmatox Posted April 7, 2015 Share Posted April 7, 2015 il me semble que "bonjour", "merci" ou autres formules de politesse ne sont pas interdit sur ce forum ... C'est pas facile avec le peu d'information que tu donnes mais il semblerait que le problème vient plus de ton model As tu bien déclaré tes champs dans ton model ? Link to comment Share on other sites More sharing options...
mynotore Posted April 7, 2015 Author Share Posted April 7, 2015 Bonjour xmatox et merci pour le temps que tu peux prendre pour te pencher sur mon problème J'ai déclaré mon model mais en effet je ne sais pas trop comment prestashop se sert de ce model. Je l'ai appelé dans AdminMonModuleController.php mais je ne sais pas si c'est ici qu'il faut le faire : /* Loading Models */ require_once(_PS_MODULE_DIR_.'mydelivery/models/BusinessHours.php'); class AdminBusinessHoursController extends ModuleAdminController { .... public function renderForm() [ ... } } Mon model (BusinessHours.php) : class BusinessHours extends ObjectModel { /** @var string Name */ public $hour_begin; public $hour_end; /** * @see ObjectModel::$definition */ public static $definition = array( 'table' => 'ps_business_hour', 'primary' => 'id_business_hour', 'multilang' => false, 'multishop' => true, 'fields' => array( 'hour_begin' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 64), 'hour_end' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 64), ), ); } A noter que ce module n'a pas à gérer le multilingue (puisque ce sont des heures). Par contre il doit être multiboutique. Merci. Link to comment Share on other sites More sharing options...
xmatox Posted April 8, 2015 Share Posted April 8, 2015 Salut, Tu n'as pas besoin de mettre ça /* Loading Models */ require_once(_PS_MODULE_DIR_.'mydelivery/models/BusinessHours.php'); normalement la liaison entre ton controller et ton model se fait toute seule si tu as bien nommé tes classes et fichiers sinon il faut utiliser $this->className = 'BusinessHours'; dans ton __construct() de ton controller. Mais si tu arrives à avoir bien ta liste, c'est que tu n'as pas de problème à ce niveau. 1 Link to comment Share on other sites More sharing options...
mynotore Posted April 8, 2015 Author Share Posted April 8, 2015 (edited) Merci tu m'as bien mis sur la voie. En effet je n'avais pas mis le bon $this->className dans mon __construct(). Les champs sont désormais pré remplis en édition. Mais la liste qui s'affiche dans mon module n'utilise pas le modèle. Pour afficher la liste j'utilise le code suivant : public function renderList() { $this->addRowAction('edit'); $this->addRowAction('delete'); $this->simple_header = false; $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?') ) ); $this->fields_list = array( 'hour_begin' => array( 'title' => $this->l('Heure ouverture'), 'name' => array('title' => $this->l('Heure ouverture')), 'width' => 'auto' ), 'hour_end' => array( 'title' => $this->l('Heure fermeture'), 'width' => 'auto', ), ); $this->_where = 'AND a.id_shop='.(int)$this->context->shop->id; $lists = parent::renderList(); parent::initToolbar(); return $lists; } Toutefois maintenant je rencontre un autre problème qui est la mise à jour de mes données. Lorsque je clique sur "Modifier", le formulaire ne passe pas la valeur. Si le champ dans mon modèle est facultatif j'ai "update sucessfull" mais sans modification de donnée. Une nouvelle entrée est insérée dans ma table avec des valeurs vides. Pourquoi fait-il un insert au lieu d'un update? C'est un comportement qui me semble très bizarre! Peut-être faudrait-il que j'ouvre un nouveau sujet.... Edited April 8, 2015 by mynotore (see edit history) Link to comment Share on other sites More sharing options...
changa Posted September 10, 2020 Share Posted September 10, 2020 (edited) bonjour j'aimerais recuperer les donnees d'une table présicement une date dans la table cart-rule de prestashop j'amerais savoir comment je peux faire pour recuperer cette date j'aimerais la passer en paramètre sur un timer sans etre obliger de prendre cette date chaque fois et la mettre dans mon timer c'est fatiguant et pas pratique du tout j'attend vos suuggestions merci je veux recuperer la date to et le mettre en paratrre dans le timer Edited September 10, 2020 by changa the request was not completed (see edit history) 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