Codelgniter4中文手册,版本4.0.0 ←)→C①localhost:8080/news …☑☆》三 News archive News archive Elvis sighted Elvis was sighted at the Podunk internet cafe.It looked like he was writing a Codelgniter app. View article Say it isn't so! Scientists conclude that some programmers have a sense of humor. View article Caffeination,Yes! World's largest coffee shop open onsite nested coffee shop for staff only. View article ©2019 创建新闻项目 你现在知道如何使用CodeIgniter从数据库读取数据,但你尚未向数据库写入任何信 息。在本节中,你将扩展之前创建新的控制器和模型以包含此功能。 创建表格 要将数据输入数据库,你需要创建一个表格,你可以在其中输入要存储的信息。这意味 着你将需要一个包含两个字段的表格,一个用于标题,另一个用于文本。你将从模型中 的标题中获得slug。在*application/Views/news/create.php*创建新视图 <h2><?=esc($tit1e);?></h2> <?\Config\Services:validation()->listErrors();? <?form_open('news/create');? <label for="title">Title</label> <input type="input"name="title"/><br / <label for="text">Text</label> <textarea name="text"></textarea><br / (下页继续) 28 章节3.构建你的第一个应用
CodeIgniter4 中文手册, 版本 4.0.0 创建新闻项目 你现在知道如何使用 CodeIgniter 从数据库读取数据,但你尚未向数据库写入任何信 息。在本节中,你将扩展之前创建新的控制器和模型以包含此功能。 创建表格 要将数据输入数据库,你需要创建一个表格,你可以在其中输入要存储的信息。这意味 着你将需要一个包含两个字段的表格,一个用于标题,另一个用于文本。你将从模型中 的标题中获得 slug。在 *application / Views / news / create.php* 创建新视图 <h2><?= esc($title); ?></h2> <?= \Config\Services::validation()->listErrors(); ?> <?= form_open('news/create'); ?> <label for="title">Title</label> <input type="input" name="title" /><br /> <label for="text">Text</label> <textarea name="text"></textarea><br /> (下页继续) 28 章节 3. 构建你的第一个应用
Codelgniter4中文手册,版本4.0.0 (续上页) <input type="submit"name="submit"value="Create news item"/> </form> 这里只有两个函数你可能不熟悉:form_open)函数和ConfigServices:validation() >listErrors()函数。第一个函数由form helper提供,并呈现表格元素并添加额外的功 能,例如添加一个隐藏的CSRF prevention field。后者用于报告与表格验证相关的错误。 回到你的新闻控制器。你将在此处执行两项操作,检查表格是否已提交以及提交的数 据是否通过了验证规则。你将使用form validation库来执行此操作。 public function create() helper('form'); $model new NewsModel(); if ($this->validate($this->request, 'title'='requiredlmin[3]Imax[255]', 'text'='required' ])) echo view('templates/header',['title'=>'Create a news item']); echo view('news/create'); echo view('templates/footer'); y else $model->save([ 'title'=>$this->request->getVar('title'), 'slug'=url_title($this->request->getvar('title')), 'text' =$this->request->getVar('text'), ]); echo view('news/success'); 上面的代码添加了很多功能。前几行加载表格helper和NewsModel。.之后,Controller 提供的辅助函数用于验证$_POST字段。在这种情况下,标题和文本字段是必需的。 如上所示,Codelgniter具有强大的验证库。你可以阅读:doc:more about this library here <../libraries/validation>. 接下来,你可以看到检查表格验证是否成功运行的条件。如果没有,则显示表格,如果 提交并传递了所有规则,则调用模型。这将负责将新闻项传递到模型中。这包含一个新 函数url_title()。这个函数由URL helper提供,它将你传递的字符串剥离出来,用短划 线(-)替换所有空格,并确保所有内容都是小写字符。这给你留下了一个漂亮的sg, 非常适合创建URI。 3.1.构建你的第一个应用 29
CodeIgniter4 中文手册, 版本 4.0.0 (续上页) <input type="submit" name="submit" value="Create news item" /> </form> 这里只有两个函数你可能不熟悉: form_open() 函数和 ConfigServices::validation()- >listErrors() 函数。第一个函数由form helper 提供,并呈现表格元素并添加额外的功 能,例如添加一个隐藏的CSRF prevention field。后者用于报告与表格验证相关的错误。 回到你的新闻控制器。你将在此处执行两项操作,检查表格是否已提交以及提交的数 据是否通过了验证规则。你将使用form validation 库来执行此操作。 public function create() { helper('form'); $model = new NewsModel(); if (! $this->validate($this->request, [ 'title' => 'required|min[3]|max[255]', 'text' => 'required' ])) { echo view('templates/header', ['title' => 'Create a news item']); echo view('news/create'); echo view('templates/footer'); } else { $model->save([ 'title' => $this->request->getVar('title'), 'slug' => url_title($this->request->getVar('title')), 'text' => $this->request->getVar('text'), ]); echo view('news/success'); } } 上面的代码添加了很多功能。前几行加载表格 helper 和 NewsModel。之后,Controller 提供的辅助函数用于验证 $_POST 字段。在这种情况下,标题和文本字段是必需的。 如上所示,CodeIgniter 具有强大的验证库。你可以阅读:doc:more about this library here <../libraries/validation>。 接下来,你可以看到检查表格验证是否成功运行的条件。如果没有,则显示表格,如果 提交并传递了所有规则,则调用模型。这将负责将新闻项传递到模型中。这包含一个新 函数 url_title()。这个函数由URL helper 提供,它将你传递的字符串剥离出来,用短划 线 (-) 替换所有空格,并确保所有内容都是小写字符。这给你留下了一个漂亮的 slug, 非常适合创建 URI。 3.1. 构建你的第一个应用 29
Codelgniter4中文手册,版本4.0.0 在此之后,加载视图以显示成功消息。在application/Views/news/success.php创 建一个视图并写一条成功消息。 模型 最适合剩下的就是确保你的模型设置为允许正确保存数据。使用的“save()“方法将根 据主键的存在来确定是否应插入信息,或者行是否已存在且应更新。在这种情况下,没 有“id传递给它的字段,所以它会在它的表中插入一个新行,即*news*。 但是,默认情况下,模型中的插入和更新方法实际上不会保存任何数据,因为它不知道 哪些字段可以安全更新。编辑模型以在“$allowedFields'“属性中为其提供可更新字段的 列表。 <?php class NewsModel extends \CodeIgniter\Model protected $table ='news'; protected $allowedFields ['title','slug','text']; 此新属性现在包含我们允许保存到数据库的字段。请注意,我们遗漏了“d?那是因 为你几乎不需要这样做,因为它是数据库中的自动递增字段。这有助于防止批量分配 漏洞。如果你的模型正在处理你的时间戳,你也可以将其保留。 路由 在开始将新闻项添加到CodeIgniter应用程序之前,必须向*Config/Routes.php*文件 添加额外的规则。确保你的文件包含以下内容。这可以确保CodeIgniter将’create'视 为一种方法,而不是新闻项目的slug。 Sroutes->post('news/create','News:create'); Sroutes->add('news/(segment)','News:view/$1'); Sroutes->get('news','News:index'); Sroutes->add('(any)','Pages:view/$1'); 现在将浏览器指向安装CodeIgniter的本地开发环境,并将index.php/news/create添 加到URL。恭喜,你刚刚创建了第一个CodeIgniter应用程序!添加一些新闻并查看你 制作的不同页面。 结束语 本教程没有涵盖你对完整内容管理系统可能期望的所有内容,但它向你介绍了路由,编 写控制器和模型等更重要的主题。我们希望本教程能让你深入了解CodeIgniter的一些 基本设计模式,你可以对其进行扩展。 30 章节3.构建你的第一个应用
CodeIgniter4 中文手册, 版本 4.0.0 在此之后,加载视图以显示成功消息。在 application/Views/news/success.php 创 建一个视图并写一条成功消息。 模型 最适合剩下的就是确保你的模型设置为允许正确保存数据。使用的 ‘‘save()‘‘方法将根 据主键的存在来确定是否应插入信息,或者行是否已存在且应更新。在这种情况下,没 有 ‘‘id‘‘传递给它的字段,所以它会在它的表中插入一个新行,即 **news**。 但是,默认情况下,模型中的插入和更新方法实际上不会保存任何数据,因为它不知道 哪些字段可以安全更新。编辑模型以在 ‘‘$allowedFields‘‘属性中为其提供可更新字段的 列表。 <?php class NewsModel extends \CodeIgniter\Model { protected $table = 'news'; protected $allowedFields = ['title', 'slug', 'text']; } 此新属性现在包含我们允许保存到数据库的字段。请注意,我们遗漏了 ‘‘id‘‘?那是因 为你几乎不需要这样做,因为它是数据库中的自动递增字段。这有助于防止批量分配 漏洞。如果你的模型正在处理你的时间戳,你也可以将其保留。 路由 在开始将新闻项添加到 CodeIgniter 应用程序之前,必须向 *Config/Routes.php* 文件 添加额外的规则。确保你的文件包含以下内容。这可以确保 CodeIgniter 将’create’视 为一种方法,而不是新闻项目的 slug。 $routes->post('news/create', 'News::create'); $routes->add('news/(:segment)', 'News::view/$1'); $routes->get('news', 'News::index'); $routes->add('(:any)', 'Pages::view/$1'); 现在将浏览器指向安装 CodeIgniter 的本地开发环境,并将 index.php/news/create 添 加到 URL。恭喜,你刚刚创建了第一个 CodeIgniter 应用程序!添加一些新闻并查看你 制作的不同页面。 结束语 本教程没有涵盖你对完整内容管理系统可能期望的所有内容,但它向你介绍了路由,编 写控制器和模型等更重要的主题。我们希望本教程能让你深入了解 CodeIgniter 的一些 基本设计模式,你可以对其进行扩展。 30 章节 3. 构建你的第一个应用
Codelgniter4中文手册,版本4.0.0 现在你已完成本教程,我们建议你查看其余文档。CodeIgniter因其全面的文档而受到 称赞。使用它有利于你,并彻底阅读“简介”和“一般主题”部分。你应该在需要时阅 读类和帮助程序引用。 每个中级PHP程序员都应该能够在几天内获得Codelgniter的支持。 如果你仍然对框架或你自己的Codelgniter代码有疑问,你可以: ·看看我们的论坛 ·访问我们的RC聊天室 ·探索Wiki 3.1.2开始并运行 你可以从官网手动下载框架文件,但是对于本教程,我们将使用推荐的方式并通过 Composer安装AppStarter软件包。在命令行中输入以下内容: composer create-project codeigniter4/appstarter ci-blog -s rc 这将创建一个新文件夹ci-blog,其中包含你的应用程序代码,并且在vendor文件夹中 安装了CodeIgniter。 默认情况下,CodeIgniter以生产模式启动。这是一项安全措施,可防止你的网站在上 线后马上被攻击,从而使网站更加安全。所以首先让我们先修改一下这部分内容。将 env文件复制或重命名为.env,并打开它。 该文件包含服务器特定的设置。这意味着你无需将任何敏感信息提交到代码库 中。它包括一些常用的公共配置项,尽管它们都已被注释掉。因此,取消注释 CI_ENVIRONMENT所在的代码行,然后将production更改为development: CI ENVIRONMENT development 这样一来,你就可以在浏览器中查看这个应用了。你可以通过你喜欢的任何Wb服务 器(Apache或Nginx等等)为它提供服务,但是Codelgniter也附带了一个简单的命 令,该命令使用PHP的内建服务器来帮助你在开发机上快速启动并运行。在项目的根 目录中,在命令行中输入以下内容: php spark serve 3.1.3欢迎页 现在,在浏览器地址栏中输入正确的URL,你将看到框架的欢迎页面。立即尝试以下 URL: http://localhost:8080 你将看到类似这样的页面: 3.1.构建你的第一个应用 31
CodeIgniter4 中文手册, 版本 4.0.0 现在你已完成本教程,我们建议你查看其余文档。CodeIgniter 因其全面的文档而受到 称赞。使用它有利于你,并彻底阅读“简介”和“一般主题”部分。你应该在需要时阅 读类和帮助程序引用。 每个中级 PHP 程序员都应该能够在几天内获得 CodeIgniter 的支持。 如果你仍然对框架或你自己的 CodeIgniter 代码有疑问,你可以: • 看看我们的 论坛 • 访问我们的 IRC 聊天室 • 探索 Wiki 3.1.2 开始并运行 你可以从官网手动下载框架文件,但是对于本教程,我们将使用推荐的方式并通过 Composer 安装 AppStarter 软件包。在命令行中输入以下内容: composer create-project codeigniter4/appstarter ci-blog -s rc 这将创建一个新文件夹 ci-blog,其中包含你的应用程序代码,并且在 vendor 文件夹中 安装了 CodeIgniter。 默认情况下,CodeIgniter 以生产模式启动。这是一项安全措施,可防止你的网站在上 线后马上被攻击,从而使网站更加安全。所以首先让我们先修改一下这部分内容。将 env 文件复制或重命名为 .env,并打开它。 该文件包含服务器特定的设置。这意味着你无需将任何敏感信息提交到代码库 中。它包括一些常用的公共配置项,尽管它们都已被注释掉。因此,取消注释 CI_ENVIRONMENT 所在的代码行,然后将 production 更改为 development: CI_ENVIRONMENT = development 这样一来,你就可以在浏览器中查看这个应用了。你可以通过你喜欢的任何 Web 服务 器(Apache 或 Nginx 等等)为它提供服务,但是 CodeIgniter 也附带了一个简单的命 令,该命令使用 PHP 的内建服务器来帮助你在开发机上快速启动并运行。在项目的根 目录中,在命令行中输入以下内容: php spark serve 3.1.3 欢迎页 现在,在浏览器地址栏中输入正确的 URL,你将看到框架的欢迎页面。立即尝试以下 URL: http://localhost:8080 你将看到类似这样的页面: 3.1. 构建你的第一个应用 31
Codelgniter4中文手册,版本4.0.0 Codelgniter Home Docs Commurity Comte Welcome to Codelgniter 4.0.0-rc.4 The small framework with powerful features About this page The pageyoursbngmyby Codegnite 4pp/Wwm/地LCc.m,php The corresponding controleospecan beoud app/controllere/Hme.php Pagererred in 02 c 这意味着你的应用程序已经正常运行了,你可以开始编写你自己的代码了。 3.1.4调试 现在你处于开发模式,你将在应用程序底部看到一个工具栏。该工具栏包含许多有用 的功能,你可以在开发过程中使用这些功能。这个工具栏不会出现在生产环境中。单 击底部的任何选项卡将显示附加信息。单击工具栏右侧的X可以将其最小化为带有 Codelgniter图标的小方块。如果单击该工具栏将再次显示。 除此之外,当你在程序中遇到异常或其他错误时,CodeIgniter还会提供一些有用的错 误页面。打开app/Controllers,/Home.php并修改一些内容以制造一个错误(删除分号 或花括号试试~)。屏幕将显示类似以下内容的页面: 32 章节3.构建你的第一个应用
CodeIgniter4 中文手册, 版本 4.0.0 这意味着你的应用程序已经正常运行了,你可以开始编写你自己的代码了。 3.1.4 调试 现在你处于开发模式,你将在应用程序底部看到一个工具栏。该工具栏包含许多有用 的功能,你可以在开发过程中使用这些功能。这个工具栏不会出现在生产环境中。单 击底部的任何选项卡将显示附加信息。单击工具栏右侧的 X 可以将其最小化为带有 CodeIgniter 图标的小方块。如果单击该工具栏将再次显示。 除此之外,当你在程序中遇到异常或其他错误时,CodeIgniter 还会提供一些有用的错 误页面。打开 app/Controllers/Home.php 并修改一些内容以制造一个错误(删除分号 或花括号试试 ~)。屏幕将显示类似以下内容的页面: 32 章节 3. 构建你的第一个应用