komar62 Posted March 28, 2012 Share Posted March 28, 2012 Bonjour, Je suis actuellement en train de dévellopper plusieurs modules prestashop.Je travaille sur la derniere version de prestashop a savoir Dans mon dossier de module j'ai un dossier css, je voudrais pouvoir a l'installation du module pourvoir le deplacé dans theme/mon_theme/css/modules/nom_du_module/. Pour cela j'ai codé la fonction install de mon module comme ceci: public function install() { if (parent::install() == false OR !$this->registerHook( 'home' ) OR !$this->registerHook('header') OR !Configuration::updateValue('PERIODE1', 'mardi;mercredi') OR !Configuration::updateValue('JOUR_FIN1', 'lundi') OR !Configuration::updateValue('HEURE_FIN1', '9') OR !Configuration::updateValue('PERIODE2', 'vendredi;samedi') OR !Configuration::updateValue('JOUR_FIN2', 'jeudi') OR !Configuration::updateValue('HEURE_FIN2', '9') OR !rename(_PS_MODULE_DIR_.$this->name.'/css', _THEME_CSS_DIR_.'modules/'.$this->name) ) return false; return true; } J'utilise la fonction rename pour deplacé la totalité du dossier et j'obtiens le message d'erreur suivant lors de l'installation: Warning: rename(/homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/css/, /~lejuille/maj_presta/themes/pdf_theme/css/modules/blockdeliverytime/) [function.rename]: No such file or directory in /homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 36 J'ai aussi essayer avec la fonction copy pour déplacé un par un les fichiers du dossier.Mais j'obtiens exactement la meme erreur. Si quelqu'un a une petite idée je suis preneur. Je pense que c'est pas bien méchant mais la je seche. Merci d'avance. KomaR Link to comment Share on other sites More sharing options...
SMorillon.com Posted March 28, 2012 Share Posted March 28, 2012 Bonjour, Si tu utilise la fonction rename, cela veux dire que lorsque l'on va désinstaller le module pour ensuite le réinstaller, les fichier sources n'existerons plus et l'installation ne pourra donc pas ce faire... Donc j'utiliserais la fonction copy. Contrairement à la fonction rename, la fonction copy s'applique uniquement aux fichiers et pas directement au dossier. Ci-dessous une fonction pour copier un dossier trouvé sur php.net : // copies files and non-empty directories function rcopy($src, $dst) { if (file_exists($dst)) rrmdir($dst); if (is_dir($src)) { mkdir($dst); $files = scandir($src); foreach ($files as $file) if ($file != "." && $file != "..") rcopy("$src/$file", "$dst/$file"); } else if (file_exists($src)) copy($src, $dst); } Link to comment Share on other sites More sharing options...
komar62 Posted March 28, 2012 Author Share Posted March 28, 2012 c'est vrai jai oublié de préciser que dans ma fonction uninstall() je fais le rename dans le sens inverse . Je vais testé ton script, mais je pense que mon erreur viens du fait que je n'ouvrais pas le dossier en php. Link to comment Share on other sites More sharing options...
komar62 Posted March 28, 2012 Author Share Posted March 28, 2012 j'ai modifier un peu ta fonction pour l'adapter a ma classe: public function rcopy($src, $dst) { if (file_exists($dst)) rrmdir($dst); if (is_dir($src)) { mkdir($dst); $files = scandir($src); foreach ($files as $file) if ($file != "." && $file != "..") $this->rcopy("$src/$file", "$dst/$file"); } else if (file_exists($src)) { copy($src, $dst); return true; }else{ return false; } } Mais voila lorsque j'essaye de l'utilisé je retombe sur le meme genre d'erreur : Warning: mkdir() [function.mkdir]: No such file or directory in /homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 163 Warning: copy(/~lejuille/maj_presta/themes/pdf_theme/css/modules/blockdeliverytime/blockdeliverytime.css) [function.copy]: failed to open stream: No such file or directory in /homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 169 Warning: copy(/~lejuille/maj_presta/themes/pdf_theme/css/modules/blockdeliverytime/index.php) [function.copy]: failed to open stream: No such file or directory in /homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 169 Link to comment Share on other sites More sharing options...
SMorillon.com Posted March 28, 2012 Share Posted March 28, 2012 Je pense que $dst est vide... Peux-tu faire des echo avant le mkdir et avant le copy des variables pour être sûr de leur contenu ? Link to comment Share on other sites More sharing options...
komar62 Posted March 28, 2012 Author Share Posted March 28, 2012 en faisant un echo au debut de la fonction j'obtiens : dst=/~lejuille/maj_presta/themes/pdf_theme/css/modules/blockdeliverytime src=/homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/css/ Link to comment Share on other sites More sharing options...
SMorillon.com Posted March 28, 2012 Share Posted March 28, 2012 (edited) Ton dst devrait commerncer par "/homez.356/lejuille" qui correspond à tes dossier physique et non "/~lejuille/" qui correspond à ton url. Utilise _PS_THEME_DIR_.'css/module' Edited March 28, 2012 by SMorillon.com (see edit history) Link to comment Share on other sites More sharing options...
komar62 Posted March 29, 2012 Author Share Posted March 29, 2012 Ma fonction rcopy renvoie toujours false, et donc le module s'installe pas correctement et la copie n'est pas effectuer J'ai vu que tu utilise la fonction rrmdir, fonction qui n'est pas defini mais rmdir existe. c'est une faute de frappe ? car j'ai trouver des script rrmdir sur le net 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