首页 > 解决方案 > laravel 7,刀片文件找不到功能

问题描述

我继承了一些遗留代码,我正试图让它在开发服务器上工作。它在产品服务器上运行良好。我是一个 laravel 菜鸟。

我几乎所有东西都在工作。(我已锁定 composer.json 中的所有版本,以匹配工作站点)

最后失败的是这一行:

<img src="{{ asset(GetProfilePicLanding())}}" class="img-responsive">

我得到错误Call to undefined function GetProfilePicLanding()

刀片文件在resources/views/index.blade.php

函数 GetProfilePicLanding() 在app/helper.php

我无法想象为什么运行相同代码的两台服务器在查找此文件时会有所不同

我正在考虑添加类似 @include('app/helper') 的内容,但随后我必须修改 conf/view 文件。

如果可能的话,我试图不从 prod 修改代码本身。

会喜欢任何想法或如何最好地调试它。

谢谢你的帮助

标签: phplaravellaravel-7

解决方案


假设您的 helper.php 文件如下所示:

<?php

if (!function_exists('helper1')) {
    function helper1($string)
    {
        return ...;
    }
}

if (!function_exists('helper2')) {
    function helper2()
    {
        return ...;
    }
}

// and so on

您可以在composer.json文件中添加一行以自动加载它。

    ...
    "autoload": {
        "files": [
            "app/helper.php"
        ],
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    ...

不过,您可能需要在此之后运行 composer update 。


推荐阅读