Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый день.
Ларавел 5.6
Написал небольшой код для breadcrumbs: (но именно это счас не важно.)
<?php
namespace App\Extensions\Breadcrumbs;
class Breadcrumbs
{
static private $breadcrumbs = [
'/' => 'Home',
];
static function add(string $url, string $description): void
{
self::$breadcrumbs[$url] = $description;
}
static function render()
{
return view('extensions.breadcrumbs', [
'breadcrumbs' => self::$breadcrumbs,
]);
}
}
Использовать примерно так:
(в контроллере при выводе одной статьи)
use App\Extensions\Breadcrumbs\Breadcrumbs;
...
public function single($id_key)
{
$post = Posts::where('id_key', $id_key)->first();
Breadcrumbs::add($post->full_url, $post->short_name);
return view('pages.single', [
'row' => $post,
]);
}
Во вьюхе так:
{!! Breadcrumbs::render() !!}
Добавил в алиасы в config/app.php
'aliases' => [
...
'Breadcrumbs' => App\Extensions\Breadcrumbs\Breadcrumbs::class,
Теперь вопросы:
1) Как можно инициализировать статический класс - чтобы например можно было бы подставить не home а главная - т.е. использовать конфиг или интернационализацию?
2) Как правильно сделать, чтобы в контроллерах не использовать везде
use App\Extensions\Breadcrumbs\Breadcrumbs;
3) Как сделать чтобы была вьюха для крошек по умолчанию но ее можно было бы при желании перекрыть?
Ну и может так в целом какие то советы.
Просто по аналогии с крошками я потом сделаю еще несколько блоков и наверно сделаю из них пакет.
И хочу разобраться на этом этапе - пока кода 20 строк.
Не в сети
У тебя вопросы на несколько статей.
Попробуй посмотреть готовое решение - https://github.com/davejamesmiller/laravel-breadcrumbs или познакомься с работой https://octobercms.com/
Изменено covobo (22.06.2018 16:04:57)
Не в сети
Этот пакет я смотрел:
https://github.com/davejamesmiller/laravel-breadcrumbs
Но решил что он слишком огромный для моих скромных нужд.
По поводу вопросов тогда оставляю один:
2) Как правильно сделать, чтобы в контроллерах не использовать везде
use App\Extensions\Breadcrumbs\Breadcrumbs;
Т.е. где то в одном месте прописать что надо.
И потом просто писать везде в коде: Breadcrumbs::add($post->full_url, $post->short_name);
или что нить подобное.
Не в сети
Снова вернулся к этому вопросу.
2) Как правильно сделать, чтобы в контроллерах не использовать везде
use App\Extensions\Breadcrumbs\Breadcrumbs;
Сейчас я придумал тока добавить его в композер - автолоад - файлс - но это как то неправильно.
Не в сети
Мне кажется идеологически правильнее всего оформить крошки как директиву блейда, инициировать её в сервис провайдере и больше нигде не упоминать.
https://scotch.io/tutorials/all-about-w … directives
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Крошки это только пример.
Но как их заполнять тогда - во вью передавать все данные?
Сейчас я просто не пойму как везде использовать
Breadcrumbs
не вписывая
use App\Extensions\Breadcrumbs\Breadcrumbs;
Не в сети