Файловый менеджер в Laravel на Dropbox ч.2

Я продолжаю цикл статей, в которых буду с нуля, создавать Dropbox файловый менеджер на Laravel. В этой части, для файлового менеджера я добавлю хлебные крошки, чтобы можно было без проблем переходить по уровням в директориях с разной вложенностью…

В первой части я уже подключил к проекту Dropbox API и сделал элементарный вывод файлов/папок в файловый менеджер Laravel. Поэтому, перед тем как читать дальше, перейдите к прошлой публикации и сделайте все шаг за шагом. Только после этого переходите ко второй части.

Вместо вступления

Чтобы не пропустить все важные статьи, советую подписаться на мой блог (форма справа в сайдбаре или после статьи). Также, я рассчитываю на ваши донаты в конце публикации. Поскольку этот цикл статей я пишу на чистом энтузиазме, ради идеи и помощи другим людям. Также, эти статьи (как в принципе и другие, связанные с Laravel тут, тут и тут) не рассчитаны на новичков, поэтому я позволяю себе очень свободно выражаться тех. языком и оборотами. Однако, со всеми вопросами, прошу в комментарии, если таковые возникнут у вас. Буду стараться всем помочь по возможности. Также не забываем делиться записью в соц. сетях. Итак, теперь приступаем.

Добавляем хлебные крошки

В прошлой статье мы сделали так, что можно получить доступ к любой папке в Dropbox. Это очень хорошо, но было бы еще лучше, если бы у нас были динамические хлебные крошки позволяющие нам вернутся к любой папке в пути, даже из самой глубокой по вложенности. Сделаем это!

Открываем FileManagerController.php и переходим в Index метод. Добавляем код:

$breadcrumb = $last_segment = '';
$breadcrumb.= '<ol class="breadcrumb">';
foreach (request()->segments() as $segment) {
    $last_segment .= '/' . $segment;
    $breadcrumb.= '<li class="breadcrumb-item"><a href="'.$last_segment.'">' . ucfirst($segment) . '</a></li>';
}
$breadcrumb.= '</ol>';

Давайте теперь пройдемся по коду.

Сначала инициализируем пустые переменные — $breadcrumb и $last_segment. Первая переменная будет содержать упорядоченный список с каким-то классом хлебных крошек — breadcrumb например. К слову, это стандартное  присвоение, перед инициализацией цикла.

Дальше создаем цикл, который перебирает request()->segments() в переменную $segment, которая будет содержать извлеченные элементы массива URL адреса. В каждой итерации, добавляем к сегменту URL слеш и вносим в ссылку.

Теперь осталось передать $breadcrumb во view:

return view('filemanager.index', compact('results', 'breadcrumb'));

Затем, крошки можно вывести таким образом:

{!! $breadcrumb !!}

Подписаться на новые статьи