我将要在视图中访问的自定义函数放在哪里 (laravel 5.3)?

Where I put my custom functions to be accessed in view (laravel 5.3)?

我的函数是这样的:

function romanic_number($integer, $upcase = true) 
{ 
    $table = array('M'=>1000, 'CM'=>900, 'D'=>500, 'CD'=>400, 'C'=>100, 'XC'=>90, 'L'=>50, 'XL'=>40, 'X'=>10, 'IX'=>9, 'V'=>5, 'IV'=>4, 'I'=>1); 
    $return = ''; 
    while($integer > 0) 
    { 
        foreach($table as $rom=>$arb) 
        { 
            if($integer >= $arb) 
            { 
                $integer -= $arb; 
                $return .= $rom; 
                break; 
            } 
        } 
    } 

    return $return; 
} 

我想查看,我可以这样访问:

{{ romanic_number(2) }}

结果:二

我将要访问的自定义函数放在视图中的什么位置?

我尝试将我的自定义函数放入控制器中,但失败了

更新

我在文件夹应用程序中制作文件夹助手。然后我在文件夹 Helpers (mysystem/app/Helpers/helper.php)

中创建文件 helper.php

我把这个:

<?php

if (! function_exists('romanic_number')) 
{
    function romanic_number($integer, $upcase = true) 
    { 
        ...

        return $return; 
    } 
}

我像这样在 composer.json 中添加 "app/Helpers/helper.php" :

"autoload": {
    "psr-4": {
        "Illuminate\Support\": ""
    },
    "files": [
        "helpers.php",
        "app/Helpers/helper.php"
    ]
},

那我运行composer dump-autoload

存在这样的错误:

Call to undefined function romanic_number() (View: C:\xampp\htdocs...

您可以创建自己的自定义助手。创建 CustomHelper.php 文件并在其中添加您的函数并包含在 composer.json 文件中,如下所示

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

在文件夹 app/Helpers 中创建一个名为 helpers.php 的文件(首先您必须创建 Helpers 文件夹),将所有函数放入该文件中。

然后在 composer.json 中将此文件告诉作曲家:

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

然后执行 composer dump-autoload,您可以在您的视图或其他任何地方使用它。

例如在视图中:

{{ romanic_number(2) }}

您可以 并在那里定义所有助手:

if (! function_exists('romanic_number')) {
    function romanic_number($value)
    {
        $romanic = ....;
        return $romanic;
    }
}

然后将其添加到 composer.json,以便 Laravel 可以自动加载它:

"autoload": {
    ....
    "files": [
        "app/someFolder/helpers.php"
    ]
},