Codelgniter4中文手册,版本4.0.0 仓库 受众描述 framework 开发者 框架的已发布版本 appstarter 开发者 项目启动器(app/public/writable)依赖于“framework” userguide 任何人 预构建的用户手册 在上述所有仓库中,仓库的最新版本可以通过选择Github仓库页面的第二层导航条的 Code(代码)导航块中的”release”(发布)链接来进行下载。 Composer包 我们同样在packagist..org维护着一个通过Composer进行安装的包以下对应着上文提 及的相关仓库: codeigniter4/framework codeigniter4/appstarter codeigniter4/translations codeigniter4/coding-standard 参照文档安装页面来获取更多信息, Codelgniter4项目 我们在Github上也维护着codeigniter4 projects组织,用于管理那些不属于框架的一部 分,但是可以用来更为轻松地使用框架的项目! 仓库 受众 描述 website2 开发者 codeigniter.com网站,通过CodeIgniter4来进行构建 playground开发者 Basic code examples in project form.Still growing. 这些仓库不能通过composer来进行安装 不论你选择何种方式安装并运行CodeIgniter4,你都可以随时访问我们的在线用户指 南。 注解:在使用CodeIgniter4之前,请确保你的服务器满足要求,尤其是所需的PHP 版本和PHP扩展。例如,你可能会发现必须取消注释php.ini的“extension”部分才 能启用“curl”和“intl”。 2.1.安装 17
CodeIgniter4 中文手册, 版本 4.0.0 仓库 受众 描述 framework 开发者 框架的已发布版本 appstarter 开发者 项目启动器(app/public/writable)依赖于“framework” userguide 任何人 预构建的用户手册 在上述所有仓库中,仓库的最新版本可以通过选择 Github 仓库页面的第二层导航条的 Code(代码)导航块中的”release”(发布)链接来进行下载。 Composer 包 我们同样在 packagist.org 维护着一个通过 Composer 进行安装的包以下对应着上文提 及的相关仓库: • codeigniter4/framework • codeigniter4/appstarter • codeigniter4/translations • codeigniter4/coding-standard 参照文档安装 页面来获取更多信息. CodeIgniter 4 项目 我们在 Github 上也维护着 codeigniter4projects 组织,用于管理那些不属于框架的一部 分,但是可以用来更为轻松地使用框架的项目! 仓库 受众 描述 website2 开发者 codeigniter.com 网站,通过 CodeIgniter 4 来进行构建 playground 开发者 Basic code examples in project form. Still growing. 这些仓库不能通过 composer 来进行安装 不论你选择何种方式安装并运行 CodeIgniter4,你都可以随时访问我们的在线 用户指 南。 注解: 在使用 CodeIgniter 4 之前,请确保你的服务器满足要求,尤其是所需的 PHP 版本和 PHP 扩展。例如,你可能会发现必须取消注释 php.ini 的“extension”部分才 能启用“curl”和“intl”。 2.1. 安装 17
章节3 构建你的第一个应用 3.1构建你的第一个应用 3.1.1概述 本教程旨在向你介绍CodeIgniter4框架以及MVC架构的基本原理,并将会手把手的 向你讲解如何开发一个基本的CodeIgniter应用。 如果你不熟悉PHP,建议你先阅读W3 Schools PHP教程,然后再继续阅读下面的内 容。 在本教程中,你将创建一个基本的新闻应用程序。你将从编写可加载静态页面的代码 开始。接下来,你将创建一个新闻展示页面,用于从数据库中读取新闻内容。最后,我 们再编写一个表单,用于在数据库中创建新闻内容。 本教程将主要关注: ·模型视图-控制器的基础知识 ·路由相关的基础知识 ·表单验证 ·使用CodeIgniter的“Query Builder”执行基本的数据库查询 整个教程分为几个章节,每个章节仅解释Codelgniter框架功能的一小部分。你将会阅 读到以下几个章节: ·介绍章节,也就是本文,本章将概括性的为你讲解如何下载框架并运行自带的默 认应用。 ·加载静态页,本章将为你讲解控制器,视图和路由的基础知识。 ·新闻展示功能,你将在这里开始使用模型,并将进行一些基本的数据库操作。 19
章节 3 构建你的第一个应用 3.1 构建你的第一个应用 3.1.1 概述 本教程旨在向你介绍 CodeIgniter4 框架以及 MVC 架构的基本原理,并将会手把手的 向你讲解如何开发一个基本的 CodeIgniter 应用。 如果你不熟悉 PHP,建议你先阅读 W3Schools PHP 教程,然后再继续阅读下面的内 容。 在本教程中,你将创建一个 基本的新闻应用程序。你将从编写可加载静态页面的代码 开始。接下来,你将创建一个新闻展示页面,用于从数据库中读取新闻内容。最后,我 们再编写一个表单,用于在数据库中创建新闻内容。 本教程将主要关注: • 模型-视图-控制器的基础知识 • 路由相关的基础知识 • 表单验证 • 使用 CodeIgniter 的“Query Builder”执行基本的数据库查询 整个教程分为几个章节,每个章节仅解释 CodeIgniter 框架功能的一小部分。你将会阅 读到以下几个章节: • 介绍章节,也就是本文,本章将概括性的为你讲解如何下载框架并运行自带的默 认应用。 • 加载静态页,本章将为你讲解控制器,视图和路由的基础知识。 • 新闻展示功能,你将在这里开始使用模型,并将进行一些基本的数据库操作。 19
Codelgniter4中文手册,版本4.0.0 ·创建新闻项目,本章将介绍更高级的数据库操作和表单验证。 ·结束语,本章将为你提供进一步阅读的指导和一些其他资源。 享受CodeIgniter框架的探索之旅。 加载静态页 Note:本教程假设你已经下载好Codelgniter,并将其安装到你的开发环境。 首先你需要新建一个控制器来处理静态页。控制器就是用来帮助你完成工作的一个简 单的类,它是你整个Web应用程序的”粘合剂”。 例如,当访问下面这个URL时: http://example.com/news/latest/10 根据此URL我们可以推测出有一个名称为“news”的控制器,被调用的方法为“latest”,” latest”方法的作用应该是查询l0条新闻条目并展示在页面上。在MVC模式里,你会 经常看到下面格式的URL: http://example.com/{[controller-class{])/[controller-method{]/ {arguments] 在正式环境下URL的格式可能会更复杂,但现在,我们只需要知道这些就够了。 新建一个文件application/Controllers/Pages.php,然后添加如下代码: <?php class Pages extends CodeIgniter\Controller public function view($page 'home') 你刚创建了一个Pages类,有一个方法view并可接受一个$page的参数。Pages类继 承自CodeIgniter\Controller类,这意味着它可以访问CodeIgniter\Controller类 (system/Controller..php)中定义的方法和变量。 控制器将是你W©b应用程序中处理请求的核心。和其他的PHP类一样,可以在你的 控制器中使用$this来访问它。 现在,你已经创建了你的第一个方法,是时候创建一些基本的页面模板了。我们将新建 两个“views”(页面模板)分别作为我们的页头和页脚。 新建页头文件application/Views/Templates/Header.php并添加以下代码: <!doctype html> <html> <head> <title>CodeIgniter Tutorial</title> </head> (下页继续】 20 章节3.构建你的第一个应用
CodeIgniter4 中文手册, 版本 4.0.0 • 创建新闻项目,本章将介绍更高级的数据库操作和表单验证。 • 结束语,本章将为你提供进一步阅读的指导和一些其他资源。 享受 CodeIgniter 框架的探索之旅。 加载静态页 Note: 本教程假设你已经下载好 CodeIgniter,并将其安装 到你的开发环境。 首先你需要新建一个 控制器来处理静态页。控制器就是用来帮助你完成工作的一个简 单的类,它是你整个 Web 应用程序的”粘合剂”。 例如,当访问下面这个 URL 时: http://example.com/news/latest/10 根据此 URL 我们可以推测出有一个名称为“news”的控制器,被调用的方法为“latest”,” latest”方法的作用应该是查询 10 条新闻条目并展示在页面上。在 MVC 模式里,你会 经常看到下面格式的 URL: http://example.com/{[}controller-class{]}/{[}controller-method{]}/ {[}arguments] 在正式环境下 URL 的格式可能会更复杂,但现在,我们只需要知道这些就够了。 新建一个文件 application/Controllers/Pages.php,然后添加如下代码: <?php class Pages extends CodeIgniter\Controller { public function view($page = 'home') { } } 你刚创建了一个 Pages 类,有一个方法 view 并可接受一个 $page 的参数。Pages 类继 承自 CodeIgniter\Controller 类,这意味着它可以访问 CodeIgniter\Controller 类 (system/Controller.php) 中定义的方法和变量。 控制器将是你 Web 应用程序中处理请求的核心。和其他的 PHP 类一样,可以在你的 控制器中使用 $this 来访问它。 现在,你已经创建了你的第一个方法,是时候创建一些基本的页面模板了。我们将新建 两个“views”(页面模板) 分别作为我们的页头和页脚。 新建页头文件 application/Views/Templates/Header.php 并添加以下代码: <!doctype html> <html> <head> <title>CodeIgniter Tutorial</title> </head> (下页继续) 20 章节 3. 构建你的第一个应用
Codelgniter4中文手册,版本4.0.0 (续上页) <body> <h1><?=$tit1e;7></h1> 页头包含了一些基本的HTML代码,用于展示页面主视图之前的内容。同时,它还打 印出了$tt1e变量,这个我们之后讲控制器的时候再细说。现在,再新建个页脚文件 application/Views/Templates,/Footer..php,然后添加以下代码: <em>©2016</em> </body> </html> 在控制器中添加逻辑 你刚新建的控制器中有一个view()方法,这个方法可接受一个用于指定要加载页面的 参数。静态页面的模板目录为:application/Views/Pages/,。 在该目录中,新建Home.php和About.php模板文件。在每个文件中任意输入一些文本 然后保存它们。如果你不知道写什么,那就写“Hello World!”吧。 为了加载这些界面,你需要检查下请求的页面是否存在: public function view(Spage ='home') if file_exists(APPPATH.'/Views/Pages/'.$page.'.php')) /Whoops,we don't have a page for that! throw new \CodeIgniter\PageNotFoundException($page); $data['title']=ucfirst(Spage);//Capitalize the first letter echo view('Templates/Header',$data); echo view('Pages/'.Spage,$data); echo view('Templates/Footer',$data); 当请求的页面存在时,将给用户加载并展示出一个包含页头页脚的页面。如果不存在, 会显示“404 Page not found”的错误页面。 此事例方法中,第一行用以检查界面是否存在,fi1e_exists()是原生的PHP函数, 用于检查某个文件是否存在。PageNotFoundException是CodeIgniter的内置函数,用 来展示默认的错误页面。 在页头模板文件中,$tt1e变量代表页面的自定义标题,它是在方法中被赋值的,但 并不是直接赋值给title变量,而是赋值给$data数组中的title元素。 最后要做的就是按顺序加载所需的视图,view()方法中的参数代表要展示的视图文件 3.1.构建你的第一个应用 21
CodeIgniter4 中文手册, 版本 4.0.0 (续上页) <body> <h1><?= $title; ?></h1> 页头包含了一些基本的 HTML 代码,用于展示页面主视图之前的内容。同时,它还打 印出了 $title 变量,这个我们之后讲控制器的时候再细说。现在,再新建个页脚文件 application/Views/Templates/Footer.php,然后添加以下代码: <em>© 2016</em> </body> </html> 在控制器中添加逻辑 你刚新建的控制器中有一个 view() 方法,这个方法可接受一个用于指定要加载页面的 参数。静态页面的模板目录为:application/Views/Pages/。 在该目录中,新建 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! throw new \CodeIgniter\PageNotFoundException($page); } $data['title'] = ucfirst($page); // Capitalize the first letter echo view('Templates/Header', $data); echo view('Pages/'.$page, $data); echo view('Templates/Footer', $data); } 当请求的页面存在时,将给用户加载并展示出一个包含页头页脚的页面。如果不存在, 会显示“404 Page not found”的错误页面。 此事例方法中,第一行用以检查界面是否存在,file_exists() 是原生的 PHP 函数, 用于检查某个文件是否存在。PageNotFoundException 是 CodeIgniter 的内置函数,用 来展示默认的错误页面。 在页头模板文件中,$title 变量代表页面的自定义标题,它是在方法中被赋值的,但 并不是直接赋值给 title 变量,而是赋值给 $data 数组中的 title 元素。 最后要做的就是按顺序加载所需的视图,view() 方法中的参数代表要展示的视图文件 3.1. 构建你的第一个应用 21
Codelgniter4中文手册,版本4.0.0 名称。$data数组中的每一个元素将被赋值给一个变量,这个变量的名字就是数组的键 值。所以控制器中$data['title']的值,就等于视图中$title的值。 路由 控制器已经开始工作了!在你的浏览器中输入[your-site-url]index.php/pages,/ view来查看你的页面。当你访问index,php/pages,/view/about时你将看到包含页头 和页脚的about页面。 使用自定义的路由规则,你可以将任意的URL映射到任意的控制器和方法上,从而 打破默认的规则:http:/example.com/[controller-class]/[controller-method]/ [arguments] 让我们来试试。打开路由文件application/Config/,Routes..php然后添加如下两行代码, 并删除掉其它对$route数组赋值的代码。 Sroutes->setDefaultController('Pages/view'); Sroutes->add('(any)','Pages:view/$1'); CodeIgniter读取路由的规则为从上到下,并将请求映射到第一个匹配的规则。每个规 则都是一个正则表达式(左侧)映射到一个控制器和方法(右侧)。当获取到请求时, CodeIgniter首先查找能匹配到的第一条规则,然后调用相应的可能存在参数的控制器 和方法。 你可以在关于URL路由的文档中找到更多信息。 路由事例的第二条规则$routes数组中使用了通配符(:any)来匹配所有的请求,然 后将参数传递给Pages类的view()方法。 为请求默认的控制器,你必须确定当前路由未被定义或重新编写过。默认的路由文件 does下存在一个处理网站根目录的路由(()规则.删除以下的路由来确保Pages控制 器可以访问到我们的home页面: $routes->add(‘/',‘Home:index'); 现在访问index,php/about。路由规则是不是正确的将你带到了控制器中的view()方 法?太酷了! 新闻展示功能 在上一个章节里,我们写了一个用于展示静态页面的类文件,通过这个简单的例子我 们把CI4框架里的一些基本的概念讲解了一下。我们还简单的使用了CI4里面的路由 功能,通过自定义路由规则实现了页面的链接地址净化,使页面的访问地址看起来更 整洁和搜索引擎友好。现在,我们要开始进行一些基于数据库的动态内容的开发了。 建立教程所需的数据库 我们假设你已经安装和配置好了用于CodeIgniter4运行所需的数据库软件。我们也假 设你会使用数据库管理的客户端工具(mysql,MySQL Workbench或者phpMyAdmin 22 章节3.构建你的第一个应用
CodeIgniter4 中文手册, 版本 4.0.0 名称。$data 数组中的每一个元素将被赋值给一个变量,这个变量的名字就是数组的键 值。所以控制器中 $data['title'] 的值,就等于视图中 $title 的值。 路由 控制器已经开始工作了!在你的浏览器中输入 [your-site-url]index.php/pages/ view 来查看你的页面。当你访问 index.php/pages/view/about 时你将看到包含页头 和页脚的 about 页面。 使用自定义的路由规则,你可以将任意的 URL 映射到任意的控制器和方法上,从而 打破默认的规则:http://example.com/[controller-class]/[controller-method]/ [arguments] 让我们来试试。打开路由文件 application/Config/Routes.php 然后添加如下两行代码, 并删除掉其它对 $route 数组赋值的代码。 $routes->setDefaultController('Pages/view'); $routes->add('(:any)', 'Pages::view/$1'); CodeIgniter 读取路由的规则为从上到下,并将请求映射到第一个匹配的规则。每个规 则都是一个正则表达式(左侧)映射到一个控制器和方法(右侧)。当获取到请求时, CodeIgniter 首先查找能匹配到的第一条规则,然后调用相应的可能存在参数的控制器 和方法。 你可以在关于 URL 路由的文档中找到更多信息。 路由事例的第二条规则 $routes 数组中使用了通配符 (:any) 来匹配所有的请求,然 后将参数传递给 Pages 类的 view() 方法。 为请求默认的控制器,你必须确定当前路由未被定义或重新编写过。默认的路由文件 does 下存在一个处理网站根目录的路由 (/) 规则. 删除以下的路由来确保 Pages 控制 器可以访问到我们的 home 页面: $routes->add(‘/’, ‘Home::index’); 现在访问 index.php/about。路由规则是不是正确的将你带到了控制器中的 view() 方 法?太酷了! 新闻展示功能 在上一个章节里,我们写了一个用于展示静态页面的类文件,通过这个简单的例子我 们把 CI4 框架里的一些基本的概念讲解了一下。我们还简单的使用了 CI4 里面的路由 功能,通过自定义路由规则实现了页面的链接地址净化,使页面的访问地址看起来更 整洁和搜索引擎友好。现在,我们要开始进行一些基于数据库的动态内容的开发了。 建立教程所需的数据库 我们假设你已经安装和配置 好了用于 CodeIgniter4 运行所需的数据库软件。我们也假 设你会使用数据库管理的客户端工具(mysql,MySQL Workbench 或者 phpMyAdmin 22 章节 3. 构建你的第一个应用