Если бы я хотел сделать функцию currentUser()
для некоторого материала oauth, то я делаю, где я могу использовать его в представлении или в контроллере (подумайте, что вы используете helper_method: current_user
в контроллере приложения).
Все, что я читаю, состояния, чтобы создать папку помощников и добавить туда функцию, а затем так, как вы можете сделать Helpers::functionName
Правильно ли это сделать?
Каков «способ laravel» для создания вспомогательных функций, которые можно использовать в шаблонах и контроллерах blade-серверов?
Создайте новый файл в каталоге вашего приложения / справочника имён AnythingHelper.php. Пример моего помощника:
<?php function getDomesticCities() { $result = \App\Package::where('type', '=', 'domestic') ->groupBy('from_city') ->get(['from_city']); return $result; }
создайте поставщика услуг для вашего помощника, следуя команде
php artisan make:provider HelperServiceProvider
в регистровой функции вашего нового созданного HelperServiceProvider.php добавьте следующий код
require_once app_path('Helpers/AnythingHelper.php');
теперь в вашем config / app.php загрузите этого поставщика услуг, и все готово
'App\Providers\HelperServiceProvider',
Другим эффективным способом создания глобального файла функций является автозагрузка его непосредственно из композитора. Раздел автозагрузки композитора принимает массив files
который автоматически загружается.
Создайте файл functions.php
где угодно, в этом примере мы создадим его внутри app/Helpers
.
Добавьте свои функции, но не добавляйте класс или пространство имен.
<?php function global_function_example($str) { return 'A Global Function with '. $str; }
В composer.json
внутри секции autoload
добавьте следующую строку:
"files": ["app/Helpers/functions.php"]
Для Laravel 5:
"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" }, "files": ["app/Helpers/functions.php"] },
composer dump-autoload
Поздравления! Теперь вы можете обратиться к global_function_example('hello world')
из любой части вашего приложения, включая виды Blade.
Надеюсь, это полезно для кого-то!