J'ai créé un composant personnalisé dans lequel mon client peut ajouter et gérer différents hébergements. Je souhaite créer automatiquement un dossier (avec le nom d'alias) dans '/ images' chaque fois que le client ajoute un nouvel objet (hébergement) au composant. J'ai trouvé que je devrais être capable de tirer par exemple JFolder::create
on onContentAfterSave
, a trouvé un exemple d'utilisation de ce plugin dans com_articles avec l'utilisation d'un plugin, mais je n'arrive pas à le faire fonctionner dans mon composant personnalisé.
(Pour être complet: le problème ici est que le mediamanager, lorsqu'il est utilisé dans un sous-formulaire comme le mien, n'affiche pas l'option permettant de créer un dossier. Par conséquent, j'aimerais l'ajouter de cette façon).
Quelqu'un a des idées à ce sujet?
// code I have in edit.php of component
function onContentAfterSave(){
$foldername = $accommodation->alias;
// First we set up parameters
$searchpath = JUri::root() . '/images/accommodations' . $foldername;
// Joomla doesn't autoload JFile and JFolder
JLoader::register('JFile', JPATH_LIBRARIES . '/joomla/filesystem/file.php');
JLoader::register('JFolder', JPATH_LIBRARIES . '/joomla/filesystem/folder.php');
// Then we create the subfolders
if (!JFolder::create($searchpath . "/gallery"))
{
};
if (!JFolder::create($searchpath . "/slider"))
{
};
};
Je pense que vous pouvez être un peu confus avec JUri::root()
. Cette méthode ne fournit pas un chemin, mais une URL.
Donc, votre code actuel:
$searchpath = JUri::root() . '/images/accommodations' . $foldername;
affichera:
Vous aurez besoin de nous faire de JPATH_SITE
. Donc remplacez le code ci-dessus par ceci:
$searchpath = JPATH_SITE . '/images/accommodations' . $foldername;
J'espère que cela t'aides