функция glob не может сканировать папки в joomla

#php #function #joomla #glob

#php #функция #joomla #глоб

Вопрос:

Я создаю один модуль для joomla (серверной части), который должен сканировать данную папку на наличие изображений (которые находятся вне каталога администратора) и отображать для каждого из них поля ввода. $dir переменная получает значение iDirName поля из поля xml files модуля joomla, которое пользователь вводит на странице редактирования модуля.

Приведенный ниже файл работает, только если каталог — изображения, и выполняет поиск папки в каталоге модуля, а не в корневом каталоге сайта. Даже если я добавил в каталог изображений модулей другой directory() , это не работает, поэтому она может сканировать /administrator/modules/mod_slide_url_add/images/ этот каталог, но не этот /administrator/modules/mod_slide_url_add/images /headers.

Мне нужно иметь возможность сканировать каталог / images / headers из корня joomla. Раньше я использовал одну небольшую форму с действием к этому php-файлу, и она работала нормально, когда я вводил каталог, подобный этому .. / .. / ../ images / headers но в этом случае я был перенаправлен со страницы администратора joomla на страницу очистки с этим php-файлом и получал поля ввода на странице очистки, а не на странице joomla. Теперь я пытаюсь отобразить эти поля непосредственно на странице joomla без какого-либо перенаправления. Вы можете мне помочь?

 <?PHP
    $dir = $params->get('iDirName','1');
    echo "Dir=";
    echo $dir;
?>

<table border="0" cellspacing="0" cellpadding="0" align="center">
    <form action="modules/mod_slide_url_add/ValidateWriteLinks.php" autocomplete="off" method="post">
    <?PHP
        if(isset($dir) amp;amp; $dir!='' amp;amp; !empty($dir))
        {
            $slcfN=0;
            $sclfTargetDirectory = $dir;
            foreach(glob($sclfTargetDirectory.'*.{jpg,png,gif}',GLOB_BRACE) as $slcfFileName)
            {
                $slcfN  ;
                $info = pathinfo($slcfFileName);
                $file_name =  basename($slcfFileName,'.'.$info['extension']);
                $slcfFileName = $sclfTargetDirectory.$file_name.'.txt';
                if(!file_exists($slcfFileName))
                {
                    $FileHandle = fopen($slcfFileName, 'w') or die("can't open file");
                    fclose($FileHandle);
                }
                echo "<tr><td>";
                echo "File No $slcfN -".basename($slcfFileName);
                echo "</td><td>";
                echo "<input type='text' name='URLNo$slcfN' maxlength='105' size='35'>";
                echo "<input type='checkbox' name='ChkBoxNo$slcfN' value='Yes' /> Del File Contents...";
                echo "<input type='hidden' name='FilenameNo$slcfN' value='$slcfFileName'>";
                echo "</td></tr>";
            }
            echo "<tr><td>";
            echo "<input type='hidden' name='slcCounterS' value='$slcfN'>";
            echo "</td><td>";
            echo "<input type='submit' value='E N T E R'>";
            echo "</td></tr>";
        }else{echo"ERROR LVL1";}
    ?>
    </form>
</table>
  

Ответ №1:

Я нашел решение, добавленное в первый php-код

 $rootpath = JPATH_ROOT;
  

а затем изменил это

 $sclfTargetDirectory = $dir;
  

к этому

 $sclfTargetDirectory = $rootpath.$dir;
  

и модуль работает так, как я хотел.