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方法。

posted @ 2019-01-15 11:38  fengzmh  阅读(896)  评论(0编辑  收藏  举报