laravel博客项目实战.2--第一个页面

616 阅读2分钟

laravel默认为我们提供了路由,就是上篇文章看到的页面,这个路由文件位置

/www/wwwroot/leeBlog.com/routes

这里采用闭包定义了一个简单的路由

Route::get('/', function () {
    return view('welcome');
});

PS:我们开发过程中不提倡这么定义路由。为了提升网站的响应速度,我们会把路由地址缓存起来,闭包路由无法进行缓存!

我们在控制台执行(注意这个时候控制台会报错)


php artisan route:cache

第一条路由

清除已有的路由内容,执行一下命令,生成我们的第一条路由

php artisan make:controller Web\IndexController

此时我们的项目结构如下图:

修改routers目录下的web.php文件,内容如下


Route::get('/', 'Web\IndexController@index');

修改app/Http/Controllers/Web/IndexController.php里面的内容如下

<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    //
    public function index()
    {
        return view('welcome');
    }
}


再次访问http://leeblog.com(我们本地映射的域名),页面和当初我们开始的页面一样,说明我们定义的第一条路由完美实现!

缓存路由

php artisan route:cache

找到我们项目中bootstrap/cache/routes-v7.php,这个就是我们的路由缓存文件,如果存在,laravel就不会重新解析路由,直接拿到这个解析后的路由进行相应,从而提升网站访问速度。

当我们增加了路由缓存,我们再增加路由,我们的新路由是无法访问的,那么我们就需要清除路由缓存

清除路由缓存

php artisan route:clear

有人说,我每次都这么写


Route::get('/', 'Web\IndexController@index');

所有的都有Web这个单词,我想去掉,可以的!

统一定义路由命名空间

找到app/Providers/RouteServiceProvider.php这个文件,修改为如下内容

    //我们自己定义一个命名空间
    protected $namespaceWeb = 'App\Http\Controllers\Web';

修改mapWebRoutes函数如下所示

    protected function mapWebRoutes()
    {
        //修改为我们自己定会的命名空间
        Route::middleware('web')
            ->namespace($this->namespaceWeb)
            ->group(base_path('routes/web.php'));
    }

这样我们的路由就可以修改为,从而避免了重复定义命名空间


Route::get('/', 'IndexController@index');

视图

laravel的视图文件默认是放在resources/views目录下面,如下图所示:

我们项目当中不提倡把文件都放在一个目录下面,要按照目录分层,方便管理

移动模板文件,这个时候我们的模板文件路径如下图所示

resources/views/web/index/welcome.blade.php

修改我们的控制器

<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    //
    public function index()
    {
        //模板
        return view('web.index.welcome');
    }
}


至此,我们自己定义的第一条路由完成。