draeya Posted October 28, 2009 Share Posted October 28, 2009 Bonjour,je developpe actuellment un module tout bête avec un upload de fichier et un lien assigné à ce fichierle soucis est que je n'arrive pas a récupréer le lien dans ma fonction hookHomevoici la classe du module merci pour votre aide.la variable concerner est: $lien; <?php class homepage extends Module { /** @var max image size */ protected $maxImageSize = 307200; public $lien; public function __construct() { $this->name = 'homepage'; $this->tab = 'Blocks'; $this->version = '1.00'; parent::__construct(); $this->page = basename(__FILE__, '.php'); $this->displayName = $this->l('HomePage Edit'); $this->description = $this->l('Modifier le visuel en Home Page'); } public function install() { if (!parent::install()) return false; if (!$this->registerHook('home')) return false; return true; } public function getCustomValues() { return Db::getInstance()->ExecuteS("select distinct(name) from ps_customization_field_lang order by 1"); } public function _MakeSelect() { global $result, $lien; $result = $this->getCustomValues(); $_Combo = ''; $_Combo .= ' if($lien == "") { $_Combo .='selected="selected" '; } $_Combo .= '>Choisir un thème...'; foreach($result as $key => $value) { if($value["name"] !='') { $_Combo .= ' if($lien == $value["name"]) { $_Combo .= 'selected="selected"'; } $_Combo .= '>'.$value["name"].''; } } $_Combo .= ''; return $_Combo; } public function getContent() { global $smarty, $lien; $this->_html = ''.$this->displayName.''; $errors = ''; if (isset($_POST['submitUpdate'])) { if ((isset($_FILES['body_homepage_logo'])&&($_FILES['body_homepage_logo']['error'] == UPLOAD_ERR_OK))) { move_uploaded_file($_FILES['body_homepage_logo']['tmp_name'], dirname(__FILE__).'/homepage_logo.png'); } if(isset($_POST['LIEN_IMG'])) { $this->lien = $_POST['LIEN_IMG']; } $this->_html .= $errors == '' ? $this->displayConfirmation('Settings updated successfully') : $errors; } $this->displayForm(); return $this->_html; } public function displayForm() { global $cookie; $this->_html = ' <form method="post" action="'.$_SERVER['REQUEST_URI'].'" enctype="multipart/form-data"> _path.'logo.gif" alt="" title="" /> '.$this->displayName.' '.$this->l('Insérer une image (635 x 351):').' _path.'homepage_logo.png" alt="" title="" /> <input type="file" name="body_homepage_logo" /> Sélectionnez un lien: '; $this->_html .= $this->_MakeSelect(); $this->_html .=' <input type="submit" name="submitUpdate" value="'.$this->l('Mettre à jour').'" class="button" /> </form>'; } public function hookHome($params) { global $smarty, $lien; print_r($this->lien); $url_img = $this->_path.'homepage_logo.png'; $smarty->assign('url_theme', $this->lien); $smarty->assign('url_img' ,$url_img); return $this->display(__FILE__, 'homepage.tpl'); } } ?> Link to comment Share on other sites More sharing options...
SotEW Posted October 28, 2009 Share Posted October 28, 2009 hmm, si je comprends bien ce que tu veux faire ici...Tu souhaites sauver un lien vers un image que tu as mis dans un input dans la page de configuration de ton module.Tu as ici un gros problème : Tu stock ce lien dans une variable de ta classe (mal définie d'ailleurs puisque tu fais à la fois référence à $this->lien et une variable global $lien.). Cette variable sera réinitialisée à chaque fois que tu rafraichi ta page.En fait, un objet de ta classe, utilisée dans le backoffice pour affichée la page de configuration, recevra ton lien dans $this->lien.Par contre, l'objet de ta classe créée pour afficher effectivement du contenu dans le front office via la fonction hookHome ne passera pas par la fonction getContent, par conséquence, ton print_r($this->lien) n'affichera que... rien.La solution pour cela est de ne pas mettre dans ton getContent() $this->lien = $_POST['...'], mais de stocker cette variable de $_POST dans la base de donnée.Bon courage dans tous les cas 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