Получение пути к файлу на основе предварительно определенного пути

0

У меня есть приложение, которое отображает файлы в каталоге (определяется $starting_file_path), и когда нажимается на каталог, я использую jquery для ссылки $.post() для ссылки на страницу и добавляю содержимое, предоставляющее мне содержимое каталога, который был нажмите. Все работает до сих пор. Единственная проблема заключается в том, что это работает только в одном каталоге. Если я попытаюсь нажать на каталог из недавно добавленного списка, он ничего не сделает. Я знаю, почему это так, потому что путь неправильный. Я не могу найти способ получить путь на основе уже заданного родительского пути.

здесь путь, по которому идет link - это просто имя каталога

include "../app/bootstrap.php";
include "../src/controllers/DisplayContentsController.php";

$data = new DisplayContentsController();
$link = (isset($_POST['link']) ? $_POST['link'] : null);

if ($link != null)
{
    $data->show($twig, $starting_file_path . '/' . $link);
}
else
{
    $data->show($twig, $starting_file_path);
}

в if, где я добавляю имя файла в исходный путь. Это работает только для первого каталога. Мне нужно, чтобы он работал для каждого после этого. Так, например, это работает, если есть каталог css потому что начальный путь - ../../ но когда я нажимаю на папку внутри css скажу block_styles он отправляет ../../block_styles который не существует. Мне нужно отправить его ../../css/block_styles. Может ли кто-нибудь помочь мне узнать, как это сделать динамически?

Теги:

1 ответ

0

Проблема заключается в значениях, которые отправляются на сервер - это похоже на то, что единственным отправленным значением является последний узел в пути (например, путь: ../../css/block_styles и браузер отправляет block_styles),

Если вы хотите, чтобы он отправил ../../css/block_styles, браузер должен знать полный путь. Вероятно, вам нужно вернуть полный путь из вашего вызова AJAX и сохранить его где-нибудь, отправив его вместе со следующим запросом.

EDIT: Хорошо, я попытаюсь расширить этот ответ. Здесь много предположений о том, как вы это делаете, потому что в вашем вопросе недостаточно подробностей - я не знаю, как выглядит HTML.

Итак, предполагая, что пользователь нажимает на ссылки (теги <a>), он может выглядеть примерно так:

<a class="folder" id="../../css">css</a>

<script>

    $("a.folder").on("click", function(event){
        // get the path from the ID of the clicked element
        var path = $(event.currentTarget).attr("id");

        // do your AJAX POST, pass the path value, and update
        // the DOM accordingly...
        $.post(...);
    });
</script>

Примечание. Я не уверен, поддерживает ли HTML значение ID . и / символы в нем - если нет, base64_encode его с помощью base64_encode или собственной схемы кодирования.

В этом примере идентификатор каждого элемента папки <a> будет полным путем к папке, на которую он ссылается, и сервер получит полный путь. Все, что вам нужно сделать, это убедиться, что каждый тег <a> имеет правильное значение id.

  • 0
    хорошо, у тебя есть идеи, где я могу сохранить это? Нет ли способа получить родительский каталог и просто добавить его?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню