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');
}
}
至此,我们自己定义的第一条路由完成。