Я продолжаю цикл статей, в которых буду с нуля, создавать 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 !!}