Laravel 5.6 中的自定义助手

Posted

技术标签:

【中文标题】Laravel 5.6 中的自定义助手【英文标题】:Custom Helpers in Laravel 5.6 【发布时间】:2019-02-02 16:27:55 【问题描述】:

我正在尝试在 Laravel 5.6 中创建自定义助手

我的助手路径是 app\Helpers\ReadExcel.php

以下是我的帮助文件:

<?php
    namespace App\Helpers;

    class ReadExcel

        public static function index($id)
            echo $id;
        
    

?>

My Helper的服务商如下

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ReadExcelServiceProvider extends ServiceProvider

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    
        //
    

    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    
        require_once app_path() . '/Helpers/ReadExcel.php';
    

config\app.php 中进行了以下更改 在提供者数组中:

App\Providers\ReadExcelServiceProvider::class,
In aliases array:
'ReadExcel' => App\Helpers\ReadExcel::class,

我正在尝试在我的控制器方法中使用帮助器,如下所示:

use ReadExcel;


public function read()
    ReadExcel::index(3);

我得到如下错误:

找不到类“ReadExcel”

请帮我解决这个问题。我不知道错在哪里。

【问题讨论】:

您不需要服务提供者来注册您的助手类。相反,只需在 config/app.php 中添加一个别名,例如 'ReadExcel' =&gt; 'App\Helpers\ReadExcel', 我已经在自己的设置中尝试过这个,它可以工作。尝试清除配置缓存(通过运行 'Php artisan config:clear' 命令)。这可能会对您有所帮助。 我不确定,但请尝试在您的控制器中导入该类。或者,在控制器中使用类的完整路径。 【参考方案1】:

Helpers 定义了像str_slug('Slug Name') 这样的简单函数,而不是类。定义完所有简单函数后,可以将其添加到composer.json 中进行注册,而不是使用ServiceProvider

您可以在composer.json 文件的autoload 部分中注册您的Helper 函数,如下所示,

"autoload": 
  "files": [
    "app/Helpers/ReadExcel.php"
  ],
  ...

【讨论】:

以上是关于Laravel 5.6 中的自定义助手的主要内容,如果未能解决你的问题,请参考以下文章

创建自定义助手类?

Laravel Blade - 自定义助手

如何在车把 ember 中定义自定义助手

codeigniter 中的自定义助手

如何在自定义助手中访问排毒元素匹配器?

jQuery UI Draggable 的自定义助手