将自己的helpers.php添加到composer.json

时间:2015-10-13 19:20:32

标签: laravel laravel-5.1

按照这个主题Use a custom function everywhere in the website,我需要一些帮助才能完成已经开始的工作。

所以我在app文件夹中创建了一个文件夹:Customs 然后我创建了一个helpers.php文件,其中包含以下代码:

<?php
use Illuminate\Support\Str;

if (! function_exists('str_slug')) {
    /**
     * Generate a URL friendly "slug" from a given string.
     *
     * @param  string  $title
     * @param  string  $separator
     * @return string
     */
    function my_slug($title, $separator = '-')
    {
        $title = str_replace('\'','_',$title);
        return Str::slug($title, $separator);
    }
}

我读到我现在必须更新我的composer.json,特别是基本上自动加载部分:

"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },

我不明白我现在该做什么... psr-4已经说整个app文件夹是自动加载的,不是吗?

我也尝试将完整路径放到helpers.php,但它也没有用。

我做错了什么?

3 个答案:

答案 0 :(得分:4)

你的自动加载应该有类似的东西:

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

其中files是您的自定义文件。另外,如在网站的任何地方使用自定义功能问题中所述,我建议您使用特征,例如: trait StringSluggify。它保持OOP方式。

答案 1 :(得分:1)

  1. 在名为app/的{​​{1}}内创建一个文件夹。
  2. Helpers内部创建您的自定义类

    app/Helpers
  3. 运行namespace App\Helpers; class FooHelper{ public static function bar(){ return 'bar'; } } 更新自动加载。

  4. 现在,您可以使用以下辅助函数:

    composer dump-autoload

    如果您的计划附加外观,请在$bar = \App\Helper\FooHelper::bar(); 中编辑外观数组,如下所示:

    config/app.php

    现在你可以调用你的函数:

    'Foo' => \App\Helpers\FooHelper::class
    

答案 2 :(得分:0)

在您的视图{{my_slug($ collection-&gt; value)}}或您的控制器中使用命名空间App \ customs \ my_slug($ value)或将use \ App \ customs添加到您的顶部controller然后my_slug($ value)