nkimraの日記

技術的なメモのブログ。

Codeigniter3でブログサンプルを作成No.2

前回の続き。

データの登録処理を実装する。

まずモデルを作成。
application/models/Blog_model.php

<?php
class Blog_model extends CI_Model
{
	public function __construct()
	{
		$this->load->database();
	}
	public function insert()
	{
		$data = array(
			'title' => $this->input->post('title'),
			'description' => $this->input->post('description'),
			'updated_at' => null,
		);
		return $this->db->insert('blog', $data);
	}
}

updated_atはCURRENT_TIMESTAMPがないのでnullを登録することで現在日時を設定する。

次にコントローラを作成する。

application/controllers/Blog.php

<?php
class Blog extends CI_Controller
{
	public function __construct()
	{
		parent::__construct();
		$this->load->helper('url', 'form');
		$this->load->library('form_validation');
		$this->load->model('Blog_model');
	}

	public function add()
	{
		$validation = [
			[
				'field' => 'title',
				'label' => 'title',
				'rules' => 'required|max_length[100]'
			]
		];
		$this->form_validation->set_rules($validation);
		if ($this->form_validation->run('insert') === FALSE)
		{
			$this->load->view('blog/add');
		}
		else
		{
			$this->Blog_model->insert();
			redirect('blog/index');
		}
	}
}

ビューを作成する。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>add</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open('blog/add'); ?>

<h3>Title</h3>
<input type="text" name="title" value="<?php echo set_value('title'); ?>" size="50" maxlength="100" />

<h3>Description</h3>
<textarea name="description" rows="10" cols="50"><?php echo set_value('description'); ?></textarea>

<div>
	<input type="submit" value="Submit" />
</div>
</form>
</body>
</html>

titleのみバリデーションを追加した。
入力に問題がなければ登録をする。

CodeIgnighter3記事まとめ - nkimraの日記