Laravel 5.5 - Class 未找到自定义 BaseController 但存在
Laravel 5.5 - Class Custom BaseController not found but exists
Laravel 5.5 自定义 BaseController
尽管存在,但未找到。已经检查了 Whosebug
上关于未找到 BaseController
的其他问题,但它们指的是默认值 BaseController
,这与我的情况不同。
这是我的实现
Controller.php
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as CheckController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends CheckController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
自定义基础控制器(基础Controller.php)
use App\Http\Controllers\Controller;
class BaseController extends Controller
{
/**
* Setup the layout used by the controller.
*
* @return void
*/
public $data = array();
public function __construct()
{
if (Sentinel::check()) {
// User is not logged in, or is not activated
$this->data['admin'] = Sentinel::getUser();
}
}
protected function setupLayout()
{
if (!is_null($this->layout)) {
$this->layout = View::make($this->layout);
}
}
}
将名为 HomeCtontroller
的 class 扩展为自定义 BaseController
class HomeController extends BaseController {
protected $layout = 'master';
public function main()
{
...
}
}
然后报如下错误
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN)
Class 'BaseController' not found
不胜感激。
我相信您没有包含完整的命名空间。
确保在 BaseController 中你有:
namespace App\Http\Controllers;
并在 HomeController
中确保您使用的是:
use App\Http\Controllers\BaseController;
所有这些控制器都应位于 app/Http/Controllers
目录中。
如果您确定在控制台
中有有效的目录和命名空间运行 composer dump-autoload
Laravel 5.5 自定义 BaseController
尽管存在,但未找到。已经检查了 Whosebug
上关于未找到 BaseController
的其他问题,但它们指的是默认值 BaseController
,这与我的情况不同。
这是我的实现
Controller.php
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as CheckController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends CheckController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
自定义基础控制器(基础Controller.php)
use App\Http\Controllers\Controller;
class BaseController extends Controller
{
/**
* Setup the layout used by the controller.
*
* @return void
*/
public $data = array();
public function __construct()
{
if (Sentinel::check()) {
// User is not logged in, or is not activated
$this->data['admin'] = Sentinel::getUser();
}
}
protected function setupLayout()
{
if (!is_null($this->layout)) {
$this->layout = View::make($this->layout);
}
}
}
将名为 HomeCtontroller
的 class 扩展为自定义 BaseController
class HomeController extends BaseController {
protected $layout = 'master';
public function main()
{
...
}
}
然后报如下错误
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN)
Class 'BaseController' not found
不胜感激。
我相信您没有包含完整的命名空间。
确保在 BaseController 中你有:
namespace App\Http\Controllers;
并在 HomeController
中确保您使用的是:
use App\Http\Controllers\BaseController;
所有这些控制器都应位于 app/Http/Controllers
目录中。
如果您确定在控制台
中有有效的目录和命名空间运行composer dump-autoload