Каким образом можно организовать хранение хелпера, который будет использоваться в нескольких blade-шаблонах?

  • 1 сентября 2023 г. 11:17
Ответы на вопрос 2
Один из способов организовать хранение хелпера, который будет использоваться в нескольких blade-шаблонах, - это создать отдельный файл-хелпер и подключить его в каждом шаблоне, где он нужен.

1. Создайте новый файл PHP, например, "helpers.php", и поместите его в директорию `app/`

2. В файле "helpers.php" определите свою функцию-хелпер, например:

```
<?php

function getList()
{
    // ваш код для получения списка (id -> value) из модели
    // например, используя Eloquent или Query Builder
}

?>
```

3. Чтобы автоматически загрузить файл-хелпер при запуске приложения Laravel, откройте файл "composer.json" в корневой папке проекта и добавьте `"app/helpers.php"` в раздел "autoload":

```
"autoload": {
    "files": [
        "app/helpers.php"
    ]
},
```

4. Затем выполняйте команду `composer dumpautoload`, чтобы обновить автозагрузчик классов Laravel.

5. В шаблонах, где вы хотите использовать хелпер, просто вызовите его функцию, например:

```
<?php
$list = getList();
?>
```

Теперь вы можете использовать этот хелпер в любом шаблоне вашего проекта без необходимости копирования кода для получения списка из модели в каждой странице.

Что касается хранения помощника для доступа к списку с модели из нужных представлений, то папку для хранения его следует создать в `app/Helpers/`. Вы можете создать новый файл внутри этой папки, например `ListHelper.php`, и определить в нем класс хелпера, который будет содержать метод для получения списка (id -> value) из модели. Это позволит организовать ваш код лучше и делает его более модульным.
Каждый решает, является ли костылем это или нет. Но есть два альтернативных решения, которые явно не являются костылями: использование View Composers и Service Injection. Независимо от выбора, рекомендуем ознакомиться с документацией по вашему основному рабочему инструменту.
Похожие вопросы