当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel中创建自定义辅助函数

凤晨朗
2023-03-14

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

看法刀身php

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

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

共有3个答案

孙帅
2023-03-14

我最初的想法是作曲家自动加载,但对我来说并不是很Laravel 5ish。L5大量使用服务提供商,它们是引导您的应用程序的东西。

首先,我在我的应用程序目录中创建了一个名为Helpers的文件夹。然后在Helpers文件夹中,我添加了我想要添加的函数的文件。拥有一个包含多个文件的文件夹可以避免一个大文件过长且无法管理。

接下来,我通过运行artisan命令创建了一个HelperServiceProvider.php

artisan make:provider HelperServiceProvider

在寄存器方法中,我添加了这个片段

public function register()
{
    foreach (glob(app_path().'/Helpers/*.php') as $filename){
        require_once($filename);
    }
}

最后,在您的配置/应用程序中注册服务提供商。提供程序数组中的php

'providers' => [
    'App\Providers\HelperServiceProvider',
]

现在Helpers目录中的任何文件都已加载,并可供使用。

更新2016-02-22

这里有很多好的选择,但如果我的答案对你有用,我会继续做一个包,以这种方式包括助手。您可以使用该软件包获得灵感,也可以随Composer一起下载。它有一些我经常使用的内置助手(但默认情况下都是非活动的),允许您使用简单的Artisan生成器创建自己的自定义助手。它还解决了一个响应者关于使用映射器的建议,并允许您显式定义要加载的自定义助手,或者默认情况下,自动加载助手目录中的所有PHP文件。非常感谢反馈和PRs!

composer require browner12/helpers

Github:browner12/助手

陶乐生
2023-03-14

这个答案适用于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步:在您的Blade模板中使用它:

<!-- 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

单品
2023-03-14

在您的应用程序文件夹中创建一个helpers.php文件并使用作曲家加载它:

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

在将其添加到您的作曲家之后。json文件,运行以下命令:

composer dump-autoload

如果你不想留下你的助手。php文件在你的应用程序目录中(因为它不是一个PSR-4命名空间的类文件),你可以做什么。com网站:存储助手。php,在bootstrap目录中。记住在你的编辑器中设置它。json文件:

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

 类似资料:
  • 我有一个有很多数字的表格,我想对所有的数字都使用数字格式。所以现在我有这个: 但我只是重复相同的函数number_format(),当有人决定格式不同时,可能会出现问题。然后我必须更改表中的所有格式。我对Nette框架有一些经验,并且存在一个选项,我可以拥有自定义帮助器,然后在模板中使用它,即:在管道之后,我有自己的自定义帮助器。Laravel刀片模板中是否有类似的内容?我在文档中没有找到任何关于

  • 如果我想为一些oauth的东西做一个函数,我可以在视图或控制器中使用它(想想rails,你在应用程序控制器中做)。 我阅读的所有内容都说明要创建一个helpers文件夹并在那里添加函数,然后您可以这样做这是正确的方法吗? 创建可用于刀片模板和控制器的辅助函数的“laravel方式”是什么?

  • 问题内容: 我不确定node.js如何在异步中实现哪些功能,在异步中没有实现的功能以及如何创建自定义异步功能。 说我想创建一个自定义的异步函数。如果只是因为我对异步函数回调或cb调用了我的最后一个参数而只知道其异步函数,我会感到惊讶: 我尝试了类似的方法,但它无法异步运行。您如何告诉node.js f实际上是异步的? 问题答案: 注意 :此答案写于2014年,在出现之前,在Promises流行之前

  • 我已经遵循了在PHP Laravel 5中创建自定义助手函数的最佳实践是什么? 这个问题的两个答案帮助我在laravel 5.1中创建自定义静态类。因为它是一个静态类。提前谢谢你。

  • 默认created_at日期保持打印为MySQL格式:2015-06-12 09:01:26。我想把它打印成我自己的方式,就像,以及将来的其他格式。 一个名为的文件,并将其存储在-它看起来像这样 能够在我的刀片视野中称之为 我不知道下一步该怎么办。 在PHP Laravel 5中创建自定义助手函数的最佳实践是什么?

  • 我在Laravel5中加载helpers文件和从视图调用函数时遇到问题。下面是我如何尝试在L5项目中设置助手的简要概述。 > 在app/Http中创建helpers.php文件; 助手文件包含一个基本函数,用于生成页面标题。 更新composer.json自动加载新的助手文件。 }, 从终端运行composer dump autoload。 经过这些步骤,我的印象是我可以从视图和控制器中使用我的助