ceadreak Posted April 24, 2012 Share Posted April 24, 2012 Bonjour, J'ai un petit (bloquant) problème pour passer une variable dans un cookie ... Dans un module, j'ai un fichier à part qui fait un petit traitement : include(dirname(__FILE__).'/../../config/config.inc.php'); include(dirname(__FILE__).'/mon_module.php'); $object = new MonModule(); $object->savecookie(); Dans le fichier mon_module.php, j'ai cette méthode public function savecookie() { global $cookie; $cookie->test = 'test'; } Et lorsque je fais un debug dans la méthode du controller appellé après (ProductController) : global $cookie; echo '<pre>'; print_r($cookie); echo '</pre>'; Il n'affiche pas ma variable test ... Avez-vous une idée ?? Merci d'avance Cordialement Link to comment Share on other sites More sharing options...
ceadreak Posted April 25, 2012 Author Share Posted April 25, 2012 Personne n'a eu le cas ? ... Link to comment Share on other sites More sharing options...
AAymeric Posted April 25, 2012 Share Posted April 25, 2012 Pourquoi tu fais : $object->savecookie(); au lieu de faire directement : $cookie->test = 'test'; Link to comment Share on other sites More sharing options...
ceadreak Posted April 25, 2012 Author Share Posted April 25, 2012 Bonjour FIZ0R, et merci de t’intéresser à mon post ! J'ai fait comme ça pour pouvoir déclarer la globale $cookie dans une fonction. J'ai essayé aussi de faire $cookie->test = 'test'; Mais rien n'y fait ... Ma clé "test" ne passe pas le controller Merci d'avance Link to comment Share on other sites More sharing options...
ceadreak Posted April 25, 2012 Author Share Posted April 25, 2012 Si je résume la situation, Je mets en place une progressbar dans mon fichier product.tpl du theme. Jusque là, pas de soucis, la progress bar est bien là. J'utilise le script swfupload.swf (dispo ici pour info : http://code.google.c.../downloads/list) couplé avec swfupload.js il est parametré comme ceci dans mon template : <div class="customizationUploadBrowse"> <input type="file" name="flash_file{$field.id_customization_field}" id="flash_img{$customizationField}" class="customization_block_input {if isset($pictures.$key)}filled{/if}" />{if $field.re <script> $(function() { $("#flash_img{$customizationField}").makeAsyncUploader({ upload_url: "{$modules_dir}flashprogressbar/upload.php", // Important! This isn't a directory, it's a HANDLER such as an ASP.NET MVC action method, or a PHP file, or a Classic ASP file, flash_url: '{$modules_dir}flashprogressbar/swfupload.swf', button_image_url: '{$modules_dir}flashprogressbar/blankButton.png', button_text: 'Parcourir', //file_size_limit: '50 MB', //debug: true //disableDuringUpload: INPUT[type='submit'], }); }); </script> <div class="customizationUploadBrowseDescription">{if !empty($field.name)}{$field.name}{else}{l s='Please select an image file from your hard drive'}{/if}</div></div> Donc ici, on peut voir qu'à la fin de l'exécution, il va appeler le fichier upload.php. Ce fichier contient ces quelques lignes : <?php include(dirname(__FILE__).'/../../config/config.inc.php'); include(dirname(__FILE__).'/flashprogressbar.php'); $flashprogressbar = new FlashProgressbar(); $flashprogressbar->savecookie('test'); ?> Et mon fichier flashprogressbar.php, la fonction savecookie() : public function savecookie($params) { global $cookie; $cookie->test = 'test_cookieeeee'; } Que je veux appeler dans le debug de la surcharge de mon ProductController <?php class ProductController extends ProductControllerCore { public function displayContent() { //parent::displayContent(); $version = str_replace('.', '', _PS_VERSION_); self::$smarty->display(_PS_MODULE_DIR_.'flashprogressbar/product_' . $version . '.tpl'); } public function pictureUpload(Product $product, Cart $cart) { global $cookie; echo '<pre>'; print_r($cookie); echo '</pre>'; if (!$fieldIds = $this->product->getCustomizationFieldIds()) return false; $authorizedFileFields = array(); foreach ($fieldIds AS $fieldId) if ($fieldId['type'] == _CUSTOMIZE_FILE_) $authorizedFileFields[(int)($fieldId['id_customization_field'])] = 'file'.(int)($fieldId['id_customization_field']); $indexes = array_flip($authorizedFileFields); foreach ($_FILES AS $fieldName => $file) if (in_array($fieldName, $authorizedFileFields) AND isset($file['tmp_name']) AND !empty($file['tmp_name'])) { $fileName = md5(uniqid(rand(), true)); if ($error = checkImage($file, (int)(Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE')))) $this->errors[] = $error; if ($error OR (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($file['tmp_name'], $tmpName))) return false; /* Original file */ elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName)) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); /* A smaller one */ elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName.'_small', (int)(Configuration::get('PS_PRODUCT_PICTURE_WIDTH')), (int)(Configuration::get('PS_PRODUCT_PICTURE_HEIGHT')))) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); elseif (!chmod(_PS_UPLOAD_DIR_.$fileName, 0777) OR !chmod(_PS_UPLOAD_DIR_.$fileName.'_small', 0777)) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); else $cart->addPictureToProduct((int)($this->product->id), $indexes[$fieldName], $fileName); unlink($tmpName); } return true; } } Et le retour du debug : Cookie Object ( [_content:protected] => Array ( [date_add] => 2012-04-25 13:53:33 [id_lang] => 2 [id_currency] => 1 [viewed] => 7 [id_guest] => 3 [id_connections] => 4 [last_visited_category] => 2 [id_cart] => 2 ) [_name:protected] => 8812c36aa5ae336c2a77bf63211d899a [_expire:protected] => 1337095970 [_domain:protected] => [_path:protected] => /prestashop/ [_cipherTool:protected] => Rijndael Object ( [_key:protected] => EZ6W8Bw3sI5dMzgwGKeUEU71RyQrhMRt [_iv:protected] => �ɤˬ���r�J'��+ ) [_key:protected] => yRL0YB7txN5w7e4KX7kMSU8qV3LriB4oopuwCSSYXKuSQmEv2Exqfvoa [_iv:protected] => QCvLAysb [_modified:protected] => ) Voila, j'ai mis le maximum pour essayer au mieux de faire passer mon problème. Merci d'avance à ceux qui pourront m'aider car je suis un peu désespéré ... Cordialement, Link to comment Share on other sites More sharing options...
ceadreak Posted April 25, 2012 Author Share Posted April 25, 2012 Le but est de passer le tableau $_FILES par le biai du cookie à la surcharge de la méthode pictureUpload() pour utiliser le fonctionnement normal de cette méthode ... En passant, j'ai essayé un debug de $cookie->id_lang dans le fichier ou j'essaie d'enregistrer une nouvelle valeur et je le retrouve bien ... Y'a-t-il une autre solution pour passer des valeurs depuis un script quelconque vers un controller ? Peut-être que je fais simplement une mauvais utilisation. Merci d'avance Link to comment Share on other sites More sharing options...
ceadreak Posted April 27, 2012 Author Share Posted April 27, 2012 Je discute un peu seul là ... Je me demande en fait si ce n'est pas parce que le script upload.php est appelé par l'animation flash "swfupload.swf" Et que ça serait à cause de cela qu'il ne veut pas créer la variable dans $cookie ... J'ai appelé ce fichier upload.php manuellement via mon navigateur et il fonctionne bien ... Toujours pas d'idée ?? Merci Link to comment Share on other sites More sharing options...
ceadreak Posted April 30, 2012 Author Share Posted April 30, 2012 Pour les intéréssés, c'est bien à cause du flash ... La solution à été de sérialiser le tableau $_FILES et de l'enregistrer dans un fichier. Ensuite le désérialiser et l'enregistrer dans le cookie via la méthode preProcess() Résolu 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