为每个页面设置一个功能怎么样?这遵循 CodeIgniter 常用的 URI 模式example.com/class/function/id/
——如下所示:
class Jstorecontroller extends CI_Controller
{
function index()
{
//Do what you want... load the home page?
}
//Load the 'home' page
function home()
{
$this->load->view('public/home');
}
//Load the 'about' page
function about()
{
$this->load->view('public/about');
}
//Load the 'contact' page
function contact()
{
$this->load->view('public/contact');
}
}
路由可用于映射 URL:要将jstorecontroll作为第一段和第二段映射到控制器中的index
函数jstorecontroll
,您可以使用此路由(在application/config/routes.php中):
$route['jstorecontroll/(:any)'] = "jstorecontroll/index/$1";
您可能希望使用正则表达式来限制映射的内容,例如:
$route['jstorecontroll/([a-z]+)'] = "jstorecontroll/index/$1";
然后你可以在你的控制器中有一个函数来过滤并加载相应的页面。但是,请注意用户输入 - 不要相信他们!确保清理输入。
class Jstorecontroll extends CI_Controller
{
function index($page = FALSE) //Default value if a page isn't specified in the URL.
{
if($page === FALSE)
{
//Do what you want if a page isn't specified. (Load the home page?)
}
else
{
switch($page)
{
case "home":
$this->load->view('public/home');
break;
case "about":
$this->load->view('public/about');
break;
case "contact":
$this->load->view('public/contact');
break;
}
}
}
}
如果您希望从 URI 调用此控制器中的其他函数,则使用上述路由可能会产生不希望的结果,它们不会被调用,而是作为参数映射到index
函数。除非您考虑更改(或添加)路线,否则您可以考虑重新映射功能。就个人而言,我只想为每个页面使用一个函数!