laravel学习笔记(五)控制器与路由
当业务逻辑比较复杂时,可以通过控制器+路由来实现页面加载,举例如下:
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方法。