静态页面 | Static pages
静态页
注:
本教程假设您下载了CodeIgniter和安装了框架在您的开发环境中。
你要做的第一件事就是建立一个控制器
处理静态页面。控制器
只是一个帮助委派工作的类。它是您的web应用程序的胶水。
例如,当调用:
http://example.com/news/latest/10
我们可以想象有一个名为“新闻”的控制器。在新闻上调用的方法将是“最新的”。新闻方法的工作可以是抓取10个新闻项目,并在页面上呈现它们。在MVC中,您经常会看到与之匹配的URL模式:
[http://example.com/[controller-class]/[controller-method]/[arguments](about:blank#)]
随着URL方案变得更加复杂,这可能会发生变化。但就目前而言,这是我们需要知道的全部。
使用以下代码在application / controllers / Pages.php中
创建一个文件。
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
}
}
您已创建一个名为的类Pages
,并使用一个接受一个名为的参数的视图方法$page
。本Pages
类扩展CI_Controller
类。这意味着新的页面类可以访问CI_Controller
类(system / core / Controller.php
)中定义的方法和变量。
该控制器是什么将成为每个请求的中心
到Web应用程序。在非常技术性的CodeIgniter讨论中,它可能被称为超级对象
。像任何php类一样,您可以在您的控制器中将其称为$this
。参考$this
你将如何加载库,视图,并通常命令框架。
现在您已经创建了第一个方法,现在可以制作一些基本的页面模板。我们将创建两个充当页面页脚和页眉的“视图”(页面模板)。
在应用程序/视图/模板/Header.php
并添加以下代码:
<html>
<head>
<title>CodeIgniter Tutorial</title>
</head>
<body>
<h1><?php echo $title; ?></h1>
标题包含加载主视图之前要显示的基本HTML代码以及标题。它还将输出$title
变量,稍后我们将在控制器中定义该变量。现在,在应用程序/视图/模板/footer.php
其中包括以下代码:
<em>© 2015</em>
</body>
</html>
向控制器添加逻辑
之前,您使用view()
方法。该方法接受一个参数,该参数是要加载的页面的名称。静态页面模板将位于申请/浏览/网页/
目录。
在该目录中,创建两个名为home.php
和about.php的
文件。在这些文件中,键入一些文本 - 任何你想要的 - 并保存它们。如果你喜欢特别的非原创,请尝试“Hello World!”。
为了加载这些页面,您必须检查请求的页面是否实际存在:
public function view($page = 'home')
{
if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404(
}
$data['title'] = ucfirst($page // Capitalize the first letter
$this->load->view('templates/header', $data
$this->load->view('pages/'.$page, $data
$this->load->view('templates/footer', $data
}
现在,当页面确实存在时,它将被加载,包括页眉和页脚,并显示给用户。如果该页不存在,则会显示“404页未找到”错误。
此方法的第一行检查页面是否实际存在。PHP本机file_exists()
函数用于检查文件是否位于预期的位置。show_404()
是一个内置的CodeIgniter函数,它呈现默认错误页。
在标头模板中,$title
变量用于自定义页面标题。标题的值是在此方法中定义的,但是它不是将值赋值给变量,而是分配给$data
阵列。
最后要做的事情是按显示视图的顺序加载视图。中的第二个参数。view()
方法用于向视图传递值。中的每个值。$data
数组分配给具有其键名的变量。所以$data['title']
在控制器中等效于$title
在视野中。
选路
控制器现在正在运行!将您的浏览器指向[your-site-url]index.php/pages/view
您的页面。当你访问index.php/pages/view/about
你会看到关于页面,再次包括页眉和页脚。
使用自定义路由规则,您可以将任何URI映射到任何控制器和方法,并打破常规约定:http://example.com/[controller-class]/[controller-method]/[arguments]
我们就这么做吧。打开位于application/config/routeres.php
并添加以下两行。中设置任何元素的所有其他代码。$route
阵列。
$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';
CodeIgniter从上到下读取其路由规则,并将请求路由到第一个匹配规则。每个规则是一个正则表达式(左侧)映射到一个控制器和方法名称用斜杠(右侧)分隔。当请求进入时,CodeIgniter会查找第一个匹配项,并可能使用参数调用相应的控制器和方法。
有关路由的更多信息可以在URI路由中找到。文献资料...
这里,第二条规则$routes
数组匹配任何
使用通配符字符串请求(:any)
.并将参数传递给view()
方法Pages
上课。
现在访问index.php/about
。它是否正确路由到view()
页面控制器中的方法?真棒!