web-dev-qa-db-fra.com

J3.8: créer un dossier sur l'élément de sauvegarde dans le composant personnalisé

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"))
    {

    };
};
1
Pieter-Jan

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:

http://example.com/images/accommodationsXXXXX


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

1
Lodder