当业务逻辑比较复杂时,可以通过控制器+路由来实现页面加载,举例如下:
1、新建控制器
在app/Http/Controllers文件夹下新增控制器,如新增app/Http/Controllers/Common/PageController.php控制器:
namespace App\Http\Controllers\Common;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\View;
class PageController extends Controller {
/**
* 显示页面视图
* @param type $strViewParam1
* @param type $strViewParam2
* @return type
*/
public function show($strViewParam1 = "", $strViewParam2 = "") {
//如一二级目录都为空,跳转到home页
if ($strViewParam1 === '' && $strViewParam2 === '') {
$strViewParam1 = $strViewParam2 = 'home';
} else if ($strViewParam1 !== '' && $strViewParam2 === '') {//如二级路径为空,则跳转到home文件夹
$strViewParam2 = $strViewParam1;
$strViewParam1 = 'home';
}
//判断视图是否存在,如不存在,跳转到404错误页面
if (!View::exists($strViewParam1 . '.' . $strViewParam2)) {
return redirect('error/404');
}
return view($strViewParam1 . '.' . $strViewParam2);
}
}
其中由于要调用View::exists方法,所以需增加引用Illuminate\Support\Facades\View
2、修改路由
修改routes/web.php文件,改为调用控制器:
Route::get('/', 'Common\PageController@show');
Route::get('{viewname}', 'Common\PageController@show');
Route::get('{folder}/{viewname}', 'Common\PageController@show');
其中@前面的Common\PageController表示是App\Http\Controllers下的Common\PageController控制器,@后面的show表示是调用控制器中的show方法。