首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建新闻主题 | Create news items

现在您已经知道如何使用CodeIgniter从数据库读取数据,但是还没有将任何信息写入数据库。在本节中,您将展开先前创建的新闻控制器和模型,以包含此功能。

创建表单

要将数据输入数据库,您需要创建一个表单,在该表单中可以输入要存储的信息。这意味着您需要有两个字段的表单,一个用于标题,另一个用于文本。你将从我们在模型中的标题中推导出子弹。创建新视图application/view/news/create.php...

代码语言:javascript
复制
<h2><?php echo $title; ?></h2>

<?php echo validation_errors(); ?>

<?php echo 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 />

    <input type="submit" name="submit" value="Create news item" />

</form>

这里只有两件事你可能不熟悉:form_open()函数和validation_errors()功能。

第一个函数由表单助手并呈现表单元素,并添加额外的功能,例如添加隐藏的CSRF预防领域后者用于报告与表单验证有关的错误。

回到你的新闻控制器。您将在这里做两件事,检查表单是否已提交以及提交的数据是否通过了验证规则。您将使用表单验证库来执行此操作。

代码语言:javascript
复制
public function create()
{
    $this->load->helper('form');
    $this->load->library('form_validation');

    $data['title'] = 'Create a news item';

    $this->form_validation->set_rules('title', 'Title', 'required');
    $this->form_validation->set_rules('text', 'Text', 'required');

    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('templates/header', $data);
        $this->load->view('news/create');
        $this->load->view('templates/footer');

    }
    else
    {
        $this->news_model->set_news();
        $this->load->view('news/success');
    }
}

上面的代码增加了很多功能。前几行加载表单助手和表单验证库。然后,为表单验证设置规则。大set_rules()方法有三个参数:输入字段的名称、在错误消息中使用的名称和规则。在这种情况下,标题和文本字段是必需的。

CodeIgniter拥有一个功能强大的表单验证库,如上所示。你可以在这里阅读更多关于这个库。

继续下去,你可以看到一个条件,检查表单验证是否成功运行。如果没有,则显示表格,如果提交通过了所有规则,则调用该模型。之后,加载视图以显示成功消息。在application / views / news / success.php创建一个视图并写一个成功消息。

模型

唯一剩下的就是编写一个将数据写入数据库的方法。您将使用QueryBuilder类插入信息,并使用输入库获取已发布的数据。打开前面创建的模型并添加以下内容:

代码语言:javascript
复制
public function set_news()
{
    $this->load->helper('url');

    $slug = url_title($this->input->post('title'), 'dash', TRUE);

    $data = array(
        'title' => $this->input->post('title'),
        'slug' => $slug,
        'text' => $this->input->post('text')
    );

    return $this->db->insert('news', $data);
}

这种新方法负责将新闻项插入数据库。第三行包含一个新函数url_title()。这个函数 - 由URL助手提供 - 剥离你传递它的字符串,用破折号( - )替换所有的空格,并确保所有的都是小写字符。这给你留下了一个不错的slu,,非常适合创建URI。

让我们继续准备稍后要插入$data数组中的记录。每个元素都与前面创建的数据库表中的列相对应。您可能会注意到一个新的方法,即post()来自输入库的方法。这种方法可以确保数据被消毒,从而保护您免受他人恶意攻击。输入库默认加载。最后,你将我们的$data数组插入到我们的数据库中。

选路

在开始将新闻项添加到CodeIgniter应用程序之前,必须向config/Broades.php档案。确保您的文件包含以下内容。这可以确保CodeIgniter将“Create”看作是一种方法,而不是新闻条目的片段。

代码语言:javascript
复制
$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';

现在将浏览器指向您安装CodeIgniter的本地开发环境,并将index.php / news / create添加到URL中。恭喜,您刚刚创建了第一个CodeIgniter应用程序!添加一些新闻并查看您制作的不同页面。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com