我们来看一下CI4框架的默认页面是如何实现的。
我们先来认识一下路由文件(app\Config\Routes.php),这个文件非常重要,且功能强大,它定义了URL模式及响应处理方法,我们先看一下这个文件的部分内容。
/**
* --------------------------------------------------------------------
* Router Setup
* --------------------------------------------------------------------
*/
$routes->setDefaultNamespace('App\Controllers'); // 设置默认的命名空间
$routes->setDefaultController('Home'); // 设置默认的控制器
$routes->setDefaultMethod('index'); // 设置默认的方法
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true); /**
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/ // We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Home::index'); // 设置访问网站根目录时通过Home控制器的index方法响应
我们可以看到上面代码通过2种方式定义了默认页面
1. 定义默认控制器为Home,默认方法为index
2. 定义路由匹配 “/” 时通过控制器Home的index方法响应
思考一下,如果以上两种方法定义的不一致,哪个优先级更高呢?我们来修改一下代码
/**
* --------------------------------------------------------------------
* Router Setup
* --------------------------------------------------------------------
*/
$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Home');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true); /**
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/ // We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', function () {
echo '第一个页面';
});
刷新页面,发现输出 “第一个页面”,证明定义路由的优先级更高。
我们再来看一下Home控制器(app\Controllers\Home.php)
<?php namespace App\Controllers; class Home extends BaseController
{
public function index()
{
return view('welcome_message');
}
}
里面只有一个index方法,返回了一个视图模板welcome_message,我们再来添加一个方法
<?php namespace App\Controllers; class Home extends BaseController
{
public function index()
{
return view('welcome_message');
} public function welcome()
{
echo 'welcome to codeigniter 4!';
}
}
我们来访问一下 /home/welcome, 看下页面效果
我们再添加一条路由规则
/**
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/ // We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', function () {
echo '第一个页面';
});
$routes->get('/welcome.html', 'Home::welcome');
我们再访问一下 /welcome.html, 可以看到一样的页面内容, 一不小心实现了页面静态化呢!