【发布时间】:2021-07-13 23:45:07
【问题描述】:
几周后,我不得不从事一个 Laravel 项目(我以前从未做过)。
当我尝试输入 /user/create 时出现错误:
Symfony\Component\Debug\Exception\FatalThrowableError
Class 'BaseHelper' not found
带有指向试图调用此函数的 UserController 文件的链接:
\BaseHelper::checkLimit('user'))
所以我尝试在use App\Base\Base 之后的UserController.php 中包含BaseHelper 和一个use App\Base\Helpers\BaseHelper,在use Base 之后的use Base 之后包含一个use BaseHelper 在UserController 类的开头。
所以我的代码如下所示:
use App\Base\Base;
use App\Base\Helpers\BaseHelper;
...
class UserController extends Controller
{
use Base;
use BaseHelper;
...
public function create()
{
...
if (User::count() >= \BaseHelper::checkLimit('user')) return redirect(url('user'))->with('danger', 'License limit reached (' . User::count() . '/' . \BaseHelper::checkLimit('user') . ')');
return view('base::user.create');
}
...
}
但是现在出现了这个错误:app\Base\Controllers\UserController cannot use App\Base\Helpers\BaseHelper - it is not a trait
正如我之前提到的,我对 Laravel 几乎一无所知,并且仍在学习很多东西,所以我不知道我一开始是否做对了,以及后来如何修复这个新错误。
【问题讨论】:
-
这不是 Laravel 问题,而是 PHP 问题。如果您使用的是
use App\Base\Helpers\BaseHelper;,那么您不应该使用\BaseHerlper,只需使用BaseHelper而不使用/。其次,这真的是一种特质吗? IE。trait BaseHelper { ... }。如果是这样,那么您可以通过use BaseHelper包含它,然后调用checkLimit('user')之类的函数。如果它只是一个具有static函数checkLimit()的类,那么您删除use BaseHelper;并执行BaseHelper::checkLimit()。
标签: php laravel user-management