【问题标题】:Where I put my custom functions to be accessed in view (laravel 5.3)?我将要访问的自定义函数放在哪里(laravel 5.3)?
【发布时间】:2017-05-09 17:42:27
【问题描述】:

我的功能是这样的:

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) }}

结果:II

我将要访问的自定义函数放在哪里?

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

更新

我在文件夹应用程序中创建文件夹助手。然后我在文件夹 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...

【问题讨论】:

    标签: php laravel laravel-5.3


    【解决方案1】:

    在文件夹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) }}
    

    【讨论】:

      【解决方案2】:

      您可以create custom helpers.php file 并在那里定义所有助手:

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

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

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

      【讨论】:

      • 检查您是否使用正确的路径并运行composer dumpauto 命令。
      • 刚刚检查过,对我有用。请出示您的composer.json 和函数文件。
      • 谢谢。问题是您将其添加到错误的composer.json。您应该将files 指令添加到项目根目录中的composer.json
      • 你是什么意思。我仍然很困惑。我将它添加到 composer.json
      • 非常感谢
      【解决方案3】:

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

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

      【讨论】:

      • @mosestoh 为什么你的 composer.json 中还有另一个 helpers.php?你可以删除它并只添加app/Helpers/helper.php 并尝试
      猜你喜欢
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      相关资源
      最近更新 更多