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

view.blade.php

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

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


当前回答

首先在App\Http目录中创建helpers.php。 然后在composer.json中添加以下代码

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

执行如下命令

composer dump-autoload

现在可以在helpers.php文件中定义自定义函数。

其他回答

在app/Helper/Helpers.php中创建Helpers.php

namespace App\Helper
class Helpers
{


}

添加作曲家和作曲家更新

 "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories",
            "database","app/Helper/Helpers.php"
        ],
        "psr-4": {
            "App\\": "app/"
        },
         "files": ["app/Helper/Helpers.php"]
    },

在控制器中使用

use App\Helper\Helpers

视图中使用 修改config->app.php文件

   'aliases' => [
    ...
    'Helpers'   => 'App\Helper\Helpers'
    ],

视图中调用

<?php echo Helpers::function_name();  ?>

这里有一些很好的答案,但我认为这是最简单的。 在Laravel 5.4(以及之前的版本)中,你可以在方便的地方创建一个类,比如App/Libraries/Helper.php

class Helper() {
    public function uppercasePara($str) {
        return '<p>' .strtoupper($str). '<p>;
    }
}

然后你可以像这样简单地在你的Blade模板中调用它:

@inject('helper', \App\Libraries\Helper)
{{ $helper->drawTimeSelector() }}

如果你不想使用@inject,那么就把'uppercasePara'函数设置为静态的,并像这样将调用嵌入到你的Blade模板中:

{{ \App\Libraries\Helper::drawTimeSelector() }}

不需要别名。Laravel自动解析具体类。

编写自定义helper的最佳实践是

1)在项目根目录的app目录中,创建一个名为Helpers的文件夹(只是为了分离和构造代码)。

2)在文件夹中写入psr-4文件或普通php文件

如果PHP文件的格式是psr-4,那么它将被自动加载,否则在编写器中添加以下行。Json,在项目根目录中

在autoload key中,创建一个名为files的新key来在自动加载时加载文件,在files对象中添加从app目录开始的路径。这里有一个例子。

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Helpers/customHelpers.php"
    ]
},
"autoload-dev": {
    "classmap": [
        "tests/TestCase.php"
    ]
},

PS:如果文件没有加载,尝试运行composer dump-autoload。

首先在App\Http目录中创建helpers.php。 然后在composer.json中添加以下代码

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

执行如下命令

composer dump-autoload

现在可以在helpers.php文件中定义自定义函数。

在你的app文件夹中创建一个helpers.php文件,并用composer加载它:

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

然后把它添加到你的作曲家。Json文件,执行如下命令:

composer dump-autoload

如果您不喜欢将helpers.php文件保存在app目录中(因为它不是一个PSR-4命名空间类文件),您可以做laravel.com网站所做的事情:将helpers.php存储在bootstrap目录中。记得在你的作曲器中设置它。json文件:

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