我在app/Helpers
中有一些辅助类。如何使用service provider
加载这些类以在刀片模板中使用它们?
e.g。如果我的课程CustomHelper
包含方法fooBar()
:
<?php
nampespace App\Helpers;
class CustomHelper
{
static function fooBar()
{
return 'it works!';
}
}
我希望能够在我的刀片模板中执行以下操作:
{{ fooBar() }}
而不是这样做:
{{ \App\Helpers\CustomHelper::fooBar() }}
P.S: answer中的@ andrew-brown Best practices for custom helpers on Laravel 5处理非类文件。拥有一个基于类的解决方案会很好,以便可以在类之间组织帮助函数。
答案 0 :(得分:32)
我不认为只有在课程中有代码时才能使用功能。好吧,你可以尝试扩展Blade,但它太多了。
你应该做的是创建一个额外的文件,例如app\Helpers\helpers.php
并在你的composer.json文件中放置:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": ["app/Helpers/helpers.php"] // <- this line was added
},
创建app/Helpers/helpers.php
文件并运行
composer dump-autoload
现在,在app/Helpers/helpers.php
文件中,您可以添加这些自定义函数,例如:
if (! function_exists('fooBar')) {
function fooBar()
{
return \App\Helpers\CustomHelper::fooBar();
}
}
所以你定义了全局函数,但实际上它们都可能使用某些类中的特定公共方法。
顺便说一句,这正是Laravel为自己的助手所做的事情,例如:
if (! function_exists('array_add')) {
function array_add($array, $key, $value)
{
return Arr::add($array, $key, $value);
}
}
如你所见array_add
只是更短(或更简洁)的写作方式Arr::add