辅助函数不加载laravel 5 - 调用未定义的函数

时间:2015-04-17 22:38:12

标签: php laravel composer-php laravel-5

我在Laravel 5中加载我的帮助文件并从​​视图中调用函数时遇到了问题。以下是我在L5项目中尝试设置帮助程序的快速概述。

  1. 在app / Http;
  2. 中创建了一个helpers.php文件
  3. 帮助程序文件包含一个基本函数,用于生成页面标题。

    public function full_title($title)
    {
         $base_title = 'Social Tracking Application';
    
         if (isset($title) && $title != ''){
            $comp_title = $title . " | " .  $base_title;    
         } else {
           $comp_title = $base_title;
         }
    
    return $comp_title;
    }
    
  4. 更新了composer.json以自动加载新的帮助文件。

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

    },

  5. 从终端运行composer dump-autoload。

  6. 在这些步骤之后,我的印象是我可以使用来自视图和控制器的助手。所以我通过使用以下内容在我的主布局视图中调用了我的新辅助函数:

    <title> full_title($title)  </title>
    

    然而,当我导航到任何页面时,我收到FatalErrorMessage调用未定义函数full_title。 (注意消息通常在标题栏中,因此我将其移动到body标签以查看错误消息)。

    我无法弄清楚它是什么我在这里做错了,我看过其他人以类似的方式使用自定义帮助文件的例子,但是我似乎没有工作,我错过了一些明显的东西?

    我正在运行Homestead。

    完整代码库:https://github.com/n1k41l/SocialTrak/tree/middleware-currentUser

4 个答案:

答案 0 :(得分:4)

我自己设法解决了这个问题,问题是我创建了我的Helpers文件作为php类。帮助器文件应该只是一个php文件 - 函数不是带有函数的类......(一旦发现它就会出现明显的错误:S)。

答案 1 :(得分:0)

在视图或控制器中调用它时,您可能需要在函数前面使用类名,例如:

Helper::my_function()

答案 2 :(得分:0)

我发现我有时也会遇到此问题,在该问题中,我将助手放置在app / Helpers / functions.php下,而不是在app / Http / helpers.php下。将它们移到后者可以使一切正常运行。

答案 3 :(得分:0)

我的问题是我在namespace文件中使用了helper.php。基本上,它没有类,没有名称空间,只是要放置一些简单的函数