Laravel 5.5自定义BaseController
即使存在也找不到。已检查StackOverflow
上有关未找到BaseController
的其他问题,但他们指的是默认BaseController
,但在我的案例中并不相同。
这是我的实施
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;
}
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
的班级扩展为自定义BaseController
class HomeController extends BaseController {
protected $layout = 'master';
public function main()
{
...
}
}
然后它会出现以下错误
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN)
Class 'BaseController' not found
会欣赏任何类型的指示。
答案 0 :(得分:1)
我相信你还没有包含完整的命名空间。
在BaseController中确保你有:
namespace App\Http\Controllers;
并在HomeController
中确保您正在使用:
use App\Http\Controllers\BaseController;
所有这些控制器都应位于app/Http/Controllers
目录中。
如果您确定在控制台
中运行composer dump-autoload
有效目录和命名空间