找不到 BaseHelper Laravel
BaseHelper not found Laravel
几个星期以来,我必须从事一个 Laravel 项目(我以前从未做过)。
当我尝试输入 /user/create
时出现错误:
Symfony\Component\Debug\Exception\FatalThrowableError
Class 'BaseHelper' not found
将 link 添加到尝试调用此函数的 UserController 文件:
\BaseHelper::checkLimit('user'))
所以我尝试在 use App\Base\Base
之后的 UserController.php
中包含 BaseHelper
和 use App\Base\Helpers\BaseHelper
,在 [=20= 之后包含 use BaseHelper
]开头的UserController
class.
所以我的代码是这样的:
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 几乎一无所知,并且还在学习很多东西,所以我不知道我一开始做的事情是否正确以及之后如何解决这个新错误.
我认为你混淆了 imports 和 traits。
导入通常在文件开头完成,您似乎做得正确:
use App\Base\Base;
use App\Base\Helpers\BaseHelper;
性状在 class 范围内,完全是一个完全不同的概念。例如
class User extends Model
{
use Authenticatable;
}
参见:
https://www.php.net/manual/en/language.oop5.traits.php
了解什么是特质。
我认为 BaseHelper
是 class,而不是特质。
所以不要在控制器中包含以下内容:
use BaseHelper;
还有
\BaseHelper
应该是 BaseHelper
.
正确的代码应该是:
use App\Base\Base;
use App\Base\Helpers\BaseHelper;
...
class UserController extends Controller
{
use Base; // I don't know if this is a trait
// use BaseHelper; // REMOVE
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');
}
...
}
几个星期以来,我必须从事一个 Laravel 项目(我以前从未做过)。
当我尝试输入 /user/create
时出现错误:
Symfony\Component\Debug\Exception\FatalThrowableError
Class 'BaseHelper' not found
将 link 添加到尝试调用此函数的 UserController 文件:
\BaseHelper::checkLimit('user'))
所以我尝试在 use App\Base\Base
之后的 UserController.php
中包含 BaseHelper
和 use App\Base\Helpers\BaseHelper
,在 [=20= 之后包含 use BaseHelper
]开头的UserController
class.
所以我的代码是这样的:
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 几乎一无所知,并且还在学习很多东西,所以我不知道我一开始做的事情是否正确以及之后如何解决这个新错误.
我认为你混淆了 imports 和 traits。
导入通常在文件开头完成,您似乎做得正确:
use App\Base\Base;
use App\Base\Helpers\BaseHelper;
性状在 class 范围内,完全是一个完全不同的概念。例如
class User extends Model
{
use Authenticatable;
}
参见: https://www.php.net/manual/en/language.oop5.traits.php 了解什么是特质。
我认为 BaseHelper
是 class,而不是特质。
所以不要在控制器中包含以下内容:
use BaseHelper;
还有
\BaseHelper
应该是 BaseHelper
.
正确的代码应该是:
use App\Base\Base;
use App\Base\Helpers\BaseHelper;
...
class UserController extends Controller
{
use Base; // I don't know if this is a trait
// use BaseHelper; // REMOVE
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');
}
...
}