我在app/Helpers
中有一些辅助类。如何使用service provider
加载这些类以在边栏选项卡模板中使用它们?
例如,如果我有一个包含方法fooBar()
的类CustomHelper
:
<?php
nampespace AppHelpers;
class CustomHelper
{
static function fooBar()
{
return 'it works!';
}
}
我希望能够在我的刀片模板中执行以下操作:
{{ fooBar() }}
而不是这样做:
{{ AppHelpersCustomHelper::fooBar() }}
PS:@andrew-brown在Laravel 5上自定义帮助程序的最佳实践中的答案涉及非类文件。最好有一个基于类的解决方案,以便可以在类之间组织帮助程序函数。
的类中有代码时,不可能只使用函数。好吧,你可以尝试扩展Blade,但它太多了。
你应该做的是创建一个额外的文件,例如appHelpershelpers.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 AppHelpersCustomHelper::fooBar();
}
}
因此,您定义了全局函数,但实际上它们都可能使用某些类中的特定公共方法。
顺便说一下,这正是Laravel为自己的助手所做的,例如:
if (! function_exists('array_add')) {
function array_add($array, $key, $value)
{
return Arr::add($array, $key, $value);
}
}
如您所见array_add
只是较短(或可能不那么冗长(的写作方式Arr::add