Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 22.06.2018 15:34:49

Как правильно сделать и использовать небольшой сервис в ларавеле.

Добрый день.
Ларавел 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 строк.

Не в сети

#2 22.06.2018 16:04:23

Re: Как правильно сделать и использовать небольшой сервис в ларавеле.

У тебя вопросы на несколько статей.
Попробуй посмотреть готовое решение - https://github.com/davejamesmiller/laravel-breadcrumbs или познакомься с работой https://octobercms.com/

Изменено covobo (22.06.2018 16:04:57)

Не в сети

#3 22.06.2018 16:17:32

Re: Как правильно сделать и использовать небольшой сервис в ларавеле.

Этот пакет я смотрел:
https://github.com/davejamesmiller/laravel-breadcrumbs

Но решил что он слишком огромный для моих скромных нужд.

По поводу вопросов тогда оставляю один:

2) Как правильно сделать, чтобы в контроллерах не использовать везде
use App\Extensions\Breadcrumbs\Breadcrumbs;

Т.е. где то в одном месте прописать что надо.
И потом просто писать везде в коде: Breadcrumbs::add($post->full_url, $post->short_name);
или что нить подобное.

Не в сети

#4 17.11.2018 16:29:31

Re: Как правильно сделать и использовать небольшой сервис в ларавеле.

Снова вернулся к этому вопросу.

2) Как правильно сделать, чтобы в контроллерах не использовать везде
use App\Extensions\Breadcrumbs\Breadcrumbs;

Сейчас я придумал тока добавить его в композер - автолоад - файлс - но это как то неправильно.

Не в сети

#5 17.11.2018 18:28:51

Re: Как правильно сделать и использовать небольшой сервис в ларавеле.

Мне кажется идеологически правильнее всего оформить крошки как директиву блейда, инициировать её в сервис провайдере и больше нигде не упоминать.
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.

Не в сети

#6 17.11.2018 19:38:04

Re: Как правильно сделать и использовать небольшой сервис в ларавеле.

Крошки это только пример.
Но как их заполнять тогда - во вью передавать все данные?

Сейчас я просто не пойму как везде использовать
Breadcrumbs
не вписывая
use App\Extensions\Breadcrumbs\Breadcrumbs;

Не в сети

Подвал раздела