我在Laravel 5中加载助手文件并从视图调用函数时遇到问题。以下是我如何尝试在L5项目中设置助手的快速概述。
- 在app/Http中创建了一个helpers.php文件
-
helpers文件包含一个基本函数,用于生成页面标题。
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; }
-
更新了composer.json以自动加载新的helpers文件。
"autoload": { "classmap": [ "database" ], "psr-4": { "App\": "app/" }, "files":["app/Http/helpers.php"]
},
-
从终端运行composer dump autoload。
在这些步骤之后,我觉得我可以从视图和控制器中使用我的助手。因此,我在主布局视图中调用了我的新助手函数,方法如下:
<title> full_title($title) </title>
然而,当我导航到任何页面时,我都会收到一个对Undefined Function full_title的致命错误消息调用。(请注意,消息通常在标题栏中,所以我将其移动到正文标记中以查看错误消息)。
我不知道我做错了什么,我见过其他人以类似的方式使用自定义帮助程序文件的例子,但我的似乎不起作用,我是不是遗漏了一些明显的东西?
我在经营Homestead。
完整的代码库:https://github.com/n1k41l/SocialTrak/tree/middleware-currentUser
我自己解决了这个问题,问题是我将Helpers文件创建为php类。helpers文件应该只是一个php文件,包含函数,而不是一个包含函数的类。。。(一旦我发现了明显的错误:S)。
我的问题是在helper.php
文件中使用了namespace
。基本上,它没有类,没有命名空间,只是一些简单的函数,你想放在那里
在视图或控制器中调用函数时,可能需要在函数前面使用类名,例如:
Helper::my_function()
我发现我在某个时候也遇到了这个问题,我把我的助手放在了app/helpers/functions.php下,而不是app/Http/helpers.php下。把它们移到后者会让一切都开始正常工作。