首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Laravel中创建自定义助手函数

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

Stack Overflow用户
提问于 2015-02-03 02:25:12
回答 22查看 339.1K关注 0票数 581

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

view.blade.php

代码语言:javascript
复制
<p>Foo Formated text: {{ fooFormatText($text) }}</p>

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

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2015-02-03 02:27:52

在应用程序文件夹中创建一个helpers.php文件,并使用composer加载它:

代码语言:javascript
复制
"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/helpers.php" // <---- ADD THIS
    ]
},

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

代码语言:javascript
复制
composer dump-autoload

如果您不喜欢将helpers.php文件保存在app目录中(因为它不是PSR-4命名空间类文件),那么您可以做laravel.com网站所做的事情:存储helpers.php 在引导目录中。记住在您的composer.json文件中设置它:

代码语言:javascript
复制
"files": [
    "bootstrap/helpers.php"
]
票数 734
EN

Stack Overflow用户

发布于 2015-09-24 23:46:52

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

此答案适用于Laravel中的一般自定义类。要获得更多特定于叶片的答案,请参见Laravel 5中的自定义叶片指令

步骤1:创建您的助手(或其他自定义类)文件,并为其提供一个匹配的命名空间。写出你的课程和方法:

代码语言:javascript
复制
<?php // Code within app\Helpers\Helper.php

namespace App\Helpers;

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

步骤2:创建别名:

代码语言:javascript
复制
<?php // Code within config/app.php

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

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

步骤4:在叶片模板中使用它:

代码语言:javascript
复制
<!-- Code within resources/views/template.blade.php -->

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

额外学分:在您的Laravel应用程序中的任何地方使用这个类:

代码语言:javascript
复制
<?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

票数 467
EN

Stack Overflow用户

发布于 2015-02-06 06:55:51

我最初的想法也是作曲家自编,但对我来说,这并不是很好的拉拉维尔风格。L5大量使用服务提供者,它们是引导您的应用程序的工具。

首先,我在我的app目录中创建了一个名为Helpers的文件夹。然后,在Helpers文件夹中添加了要添加的函数的文件。有了一个包含多个文件的文件夹,我们就可以避免太长和无法管理的一个大文件。

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

代码语言:javascript
复制
artisan make:provider HelperServiceProvider

register方法中,我添加了以下片段

代码语言:javascript
复制
public function register()
{
    foreach (glob(app_path().'/Helpers/*.php') as $filename){
        require_once($filename);
    }
}

最后,在providers数组中的config/app.php中注册服务提供程序。

代码语言:javascript
复制
'providers' => [
    'App\Providers\HelperServiceProvider',
]

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

更新2016-02-22

这里有很多很好的选择,但如果我的答案对你有用的话,我就这样做了一个包括助理员在内的一揽子计划。您可以使用该软件包作为灵感,也可以随心所欲地与作曲家一起下载。它有一些内置的帮助程序,我经常使用(但在默认情况下都是不活动的),并允许您使用简单的Artisan生成器制作自己的自定义帮助程序。它还解决了响应者使用映射程序的建议,并允许您显式定义要加载的自定义帮助程序,或者默认情况下自动加载助手目录中的所有PHP文件。反馈和PRs非常感谢!

代码语言:javascript
复制
composer require browner12/helpers

Github:browner12 12/帮手

票数 347
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28290332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档