Je sais comment télécharger un fichier donné à partir de jform si un composant est déjà installé. Mais comment télécharger un fichier à partir de mon dossier admin/assets/de mon composant lors de l'installation du composant? Dans mon script.php j'essaie le code suivant:
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
...
public function install($parent)
{
// creating a folder
$path = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . "templates" . DIRECTORY_SEPARATOR . "isis" . DIRECTORY_SEPARATOR . "html" . DIRECTORY_SEPARATOR . "com_content" . DIRECTORY_SEPARATOR . "article";
$mode = 0755;
JFolder::create($path, $mode);
// uploading a file
$file = JPATH_COMPONENT_ADMINISTRATOR . DIRECTORY_SEPARATOR . "assets" . DIRECTORY_SEPARATOR . "edit.php";
$filename = JFile::makeSafe($file['name']);
$src = $file['tmp_name'];
$dest = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . "templates" . DIRECTORY_SEPARATOR . "isis" . DIRECTORY_SEPARATOR . "html" . DIRECTORY_SEPARATOR . "com_content" . DIRECTORY_SEPARATOR . "article" . DIRECTORY_SEPARATOR . $filename;
JFile::upload($src, $dest);
}
Le dossier a été créé avec succès mais le fichier n'est pas en cours de téléchargement dans le dossier et le message d'erreur "impossible de déplacer" s'affiche.
Effectuez vos tâches de déplacement de fichier dans la fonction postflight de votre fichier script.php
function postflight($type, $parent)
{
// do it here
JFile::move($src, $dest);
}
Cette fonction est appelée après la copie des fichiers de votre paquet, les bases de données sont mises à jour, etc.
Je pense que vous vous êtes embrouillé ici. Lorsque vous installez une extension, vous téléchargez déjà un fichier Zip. Donc, une fois que Joomla a traité ce fichier Zip, les fichiers sont déjà sur le serveur. Vous ne pouvez pas "pload" un fichier d'un répertoire à un autre. Vous devez "déplacer" ou "copier" le.
Le code que vous devrez utiliser sera soit:
JFile::move($src, $dest);
ou:
JFile::copy($src, $dest);
Et comme @Nagarjun l'a déjà dit, vous devez mettre ce code dans la fonction postflight
plutôt que dans la fonction install
. Si vous utilisez la fonction install
, la fonction $src
le fichier que vous définissez peut ne pas exister;)
J'espère que cela t'aides