如何在 Laravel 中创建自定义帮助程序函数

2022-08-30 05:50:38

我想创建帮助器函数,以避免在Laravel中的视图之间重复代码。例如:

视图.blade.php

<p>Foo Formated text: {{ fooFormatText($text) }}</p>

它们基本上是文本格式化函数。我应该如何定义全局可用的帮助程序函数,例如 ?fooFormatText()


答案 1

在应用文件夹中创建一个文件,然后使用 composer 加载该文件:helpers.php

"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/helpers.php" // <---- ADD THIS
    ]
},

将其添加到文件后,运行以下命令:composer.json

composer dump-autoload

如果您不喜欢将文件保存在目录中(因为它不是PSR-4命名空间类文件),则可以执行网站所做的操作:将 存储在引导目录中。请记住在文件中设置它:helpers.phpapplaravel.comhelpers.phpcomposer.json

"files": [
    "bootstrap/helpers.php"
]

答案 2

Laravel 5 中的自定义课程,简单的方法

这个答案适用于Laravel中的一般自定义类。有关更多特定于刀片的答案,请参阅 Laravel 5 中的自定义刀片指令

第 1 步:创建帮助程序(或其他自定义类)文件,并为其提供匹配的命名空间。编写你的类和方法:

<?php // Code within app\Helpers\Helper.php

namespace App\Helpers;

class Helper
{
    public static function shout(string $string)
    {
        return strtoupper($string);
    }
}

第 2 步:创建别名:

<?php // Code within config/app.php

    'aliases' => [
     ...
        'Helper' => App\Helpers\Helper::class,
     ...

第 3 步:在项目根目录中运行composer dump-autoload

第 4 步:在边栏选项卡模板中使用它:

<!-- Code within resources/views/template.blade.php -->

{!! Helper::shout('this is how to use autoloading correctly!!') !!}

额外积分:在 Laravel 应用中的任意位置使用此类:

<?php // Code within app/Http/Controllers/SomeController.php

namespace App\Http\Controllers;

use Helper;

class SomeController extends Controller
{

    public function __construct()
    {
        Helper::shout('now i\'m using my helper class in a controller!!');
    }
    ...

资料来源:http://www.php-fig.org/psr/psr-4/

为什么有效:https://github.com/laravel/framework/blob/master/src/Illuminate/Support/ClassLoader.php

自动加载的来源:http://php.net/manual/en/language.oop5.autoload.php


推荐