辅助函数未加载 laravel 5 - 调用未定义函数
Posted
技术标签:
【中文标题】辅助函数未加载 laravel 5 - 调用未定义函数【英文标题】:helper functions not loading laravel 5 - Call to undefined function 【发布时间】:2015-06-24 23:24:54 【问题描述】:我在 Laravel 5 中加载我的帮助文件并从视图调用函数时遇到问题。下面是我如何尝试在我的 L5 项目中设置助手的快速概述。
-
在 app/Http 中创建了一个 helpers.php 文件;
帮助文件包含一个基本函数,用于生成页面标题。
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 以自动加载新的帮助文件。
"autoload":
"classmap": [
"database"
],
"psr-4":
"App\\": "app/"
,
"files":["app/Http/helpers.php"]
,
从终端运行 composer dump-autoload。
在这些步骤之后,我的印象是我可以从视图和控制器中使用我的助手。因此,我使用以下命令在主布局视图中调用了新的辅助函数:
<title> full_title($title) </title>
但是,当我导航到任何页面时,我都会收到对未定义函数 full_title 的 FatalErrorMessage 调用。 (注意消息通常在标题栏中,因此我将其移至正文标签以查看错误消息)。
我无法弄清楚我在这里做错了什么,我已经看到其他人以类似方式使用自定义帮助文件的例子,但我的似乎不起作用我错过了一些明显的东西吗?
我正在管理 Homestead。
完整代码库:https://github.com/n1k41l/SocialTrak/tree/middleware-currentUser
【问题讨论】:
可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。 【参考方案1】:我自己设法解决了这个问题,问题是我将我的 Helpers 文件创建为一个 php 类。帮助文件应该只是一个 php 文件 - 带有函数而不是带有函数的类......(一旦我发现它就明显错误:S)。
【讨论】:
【参考方案2】:在视图或控制器中调用函数时,可能需要在函数前面使用类名,例如:
Helper::my_function()
【讨论】:
【参考方案3】:我发现我在某些时候也遇到了这个问题,我把我的助手放在 app/Helpers/functions.php 下而不是 app/Http/helpers.php 下。将它们移到后者使一切开始正常。
【讨论】:
【参考方案4】:我的问题是我在helper.php
文件中使用了namespace
。基本上它没有类没有命名空间只是一些你想放在那里的普通函数
【讨论】:
以上是关于辅助函数未加载 laravel 5 - 调用未定义函数的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1 错误调用未定义函数 App\Http\Controllers\Auth\sendRegistermail()
PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\Exception\xdebug_is_enabled()
Laravel 5.7 on apache 错误调用未定义函数 Illuminate\Encryption\openssl_cipher_iv_length()
将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用