【发布时间】:2017-03-06 05:14:34
【问题描述】:
我是 Laravel 新手,这是我第一次创建控制器。我也搜索了几个小时来寻找类似的问题,但找不到任何适合我的解决方案。
当我还没有使用控制器时,我可以在 app/Providers/RouteServiceProvider.php 中使用此代码显示页面:
Route::get('/', function(){
if(View::exists('pages.index'))
return view('pages.index');
else
return view('errors.404',['xp'=>'pages/index']);
});
当我创建一个控制器并将上面的代码块替换为这个时,问题就开始了:
Route::get('/', 'SiteController@index');
使用上面的代码后,我得到了这个错误:
Container.php 第 749 行中的ReflectionException:类 SiteController 不存在
这是我的完整代码:
在app/Providers/RouteServiceProvider.php内:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\View;
class RouteServiceProvider extends ServiceProvider{
protected $namespace = 'App\Http\Controllers';
public function boot(){
parent::boot();
}
public function map(){
$this->mapApiRoutes();
$this->mapWebRoutes();
}
protected function mapWebRoutes(){
Route::group([
'middleware' => 'web',
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/web.php');
});
/*site view*/
Route::get('/', 'SiteController@index');
}
protected function mapApiRoutes(){
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
}
}
在app/Http/Controllers/SiteController.php
中<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class SiteController extends Controller{
public function index(){
$this->check_page(['pages.index']);
}
public function check_page($page){
$xp = str_replace('.','/',$page);
if(View::exists($page))
return view($page);
else
return view('errors.404',$xp);
}
}
也许我只是愚蠢(很好),但我无法从这个“希腊”Laravel Documentation 中找到任何对我有帮助的东西。
我希望有人以前遇到过这种情况并可以分享他们的解决方案。非常感谢。
【问题讨论】:
-
把
Route::get('/', 'SiteController@index');放到routes/web.php里面看看? -
你在routes/web.php中为路由输入过吗?
-
我只是这样做了,还添加了 use Illuminate\Support\Facades\View;在我的 SiteController.php 之上。但是现在我得到了一个新错误: FileViewFinder.php 第 71 行中的 ErrorException:isset 中的非法偏移类型或为空
-
抱歉,我刚刚通过删除 $this->check_page(['pages.index']);...
标签: php model-view-controller routes laravel-5.3