介绍
笨是一个功能强大的PHP框架,可以帮助你大大加快你的web应用程序的开发。 由于加载它的库的模块化方法,它具有小的性能足迹,并且通过使用模型 - 视图 - 控制器(MVC)动态来将逻辑与呈现分离。
在本教程中,您将学习如何创建一个非常简单的应用程序来显示数据库中的内容。 这不是为了提供构建自己的CMS的解决方案,而是说明如何使用CodeIgniter。 此外,它的目的是使在实践中的一些经验的教训中以前的文章 ,并假设你已经在你的开发环境中安装笨并按照所描述的配置它的第一个教程 。
计划
在本文中,您将了解如何使用一些CodeIgniter的类和函数来查询包含新闻项的数据库表,并在页面上单独显示它们。 为此,我们将创建一个控制器,一个模型和一个视图,以及保存信息的数据库(虽然后一部分也将被假设,因为有很多资源可用,你可以刷新你的MySQL技能)。
数据库要求如下:一个名为news的表,其中包含3列:id(主和自动增量),标题和主体。 当然你可以添加更多,但这是足够的例子。 然后在表中创建几个带有一些虚拟新闻项的行。 你可以使用这个伟大的教程 ,以帮助您创建的数据库,如果你不知道怎么办。 此外,请确保已配置CodeIgniter以使用此数据库。
该模型
现在我们已经正确设置了数据库,并且CodeIgniter知道它,现在是创建一个Model类来查询它的信息的时候了。 导航到您的CodeIgniter安装的应用程序/ models文件夹,并创建一个名为news_model.php(您可以命名任何你想要的文件)一个新的PHP文件。 在文件的顶部添加一个php开始标记,并通过扩展默认的CI创建Model类(记住类名以大写字母开头):
class News_model extends CI_Model { }
在这个类中,你必须创建一个函数(称为方法)来查询数据库。 CodeIgniter使用Active Record模式,使得与数据库的工作非常容易。 所有你需要做的就是加载数据库类的构造函数(如果你还没有在应用程序/ config文件夹下的文件autoload.php已经自动加载它),你是好去。 要加载它,请将以下函数粘贴到类中:
public function __construct() { $this->load->database(); }
这将使得该类中的所有方法都能够使用数据库函数。 接下来,您需要在Model类中的上述方法从数据库表中读取信息:
public function get_news($id) { if($id != FALSE) { $query = $this->db->get_where('news', array('id' => $id)); return $query->row_array(); } else { return FALSE; } }
它只是简单地检查,一个ID从消息表中检索与传递的ID的行并将其返回为包含表中的所有列的关联数组前,传递给它。 如果没有传递ID,函数将返回FALSE。
所以这需要检索信息。 现在是处理来自需要此信息的客户端的请求的时候了。 保存文件并退出。
控制器
导航到应用程序/ Controllers文件夹并创建一个名为新的PHP文件news.php(该文件的名称必须与类的名称你要放弃)。 在文件中,通过打开php标签并通过扩展创建Controller类再次启动:
class News extends CI_Controller { }
现在是时候在这个类内部处理请求并显示相关的新闻。 所有的重型提升都发生在Model类中,所以我们要做的就是加载它并传递给我们想要显示的新闻的ID参数。 因此,让我们创建一个函数调用显示(),将处理这个问题:
public function show($id) { $this->load->model('news_model'); $news = $this->news_model->get_news($id); $data['title'] = $news['title']; $data['body'] = $news['body']; $this->load->view('news_article', $data); }
这是什么方法确实是这样的:第一行加载我们刚刚创建的news_model。 第二个使用它,并存储在查询结果(这是一个包含该行中的所有列的关联数组)在$消息变量。 第三和第四线$数据阵列中存储的检索新闻标题和正文和五分之一载入我们想用显示他们一起传递信息的查看。 $ data数组将是一个变量,每个键在查看文件打印出来。 所以,让我们看看我们如何构建它。
风景
导航到应用程序/ views文件夹并创建一个名为news_article.php PHP文件(这必须是相同的名称为您在控制器中加载的人。请注意,您不需要加载那里当它包含PHP扩展)。 在此文件中复制以下行:
<?php print $title; ?><?php print $body; ?>
正如你所看到的,$标题和$体变量被传递到View经由$ data数组控制器。 您可以添加各种标记以任何方式显示页面,但出于我们的目的,标题的H1标记和正文的段落就足够了。 保存文件并将浏览器指向刚创建的控制器:
http://example.com/news/show/1
如果浏览器使得这个要求,现在的CodeIgniter会寻找一个名为控制器消息 (称为news.php一个PHP类文件),称在它的方法命名为秀(),并传递给它的参数1.此方法将负载,然后查询数据库,并返回一条消息,然后控制器传递给视图进行显示news_model。 非常简单和逻辑。 如果你去http://example.com/news/show/2,它会显示一条消息的ID等于2。
在这里你有它:一个基本但动态的应用程序,查询数据库的信息,并将其显示给客户端。 现在你可能会问,为什么要使用3个文件和所有这些功能和配置呢? 当你构建复杂的应用程序时,函数式编程变得很难管理,而不使用CodeIgniter这样的框架会迫使你自己定义所有这些库。