掲示板を作ろう その2

フォーム表示ビューを作る

application/views/ ディレクトリに form.php を作成。
じゃんじゃん書き込む。

<?php
$username = array(
    'name' => 'name',
    'value' => set_value('name'),
    'size' => '25'
);

$email = array(
    'name' => 'email',
    'value' => set_value('email'),
    'size' => '25'
);

$comment = array(
    'name' => 'comment',
    'value' => set_value('comment'),
    'rows' => '5',
    'cols' => '50'
);

$submit = array(
    'name' => 'submit',
    'value' => '送信'
);
?>

<?php echo form_open('board'); ?>

<p>
<?php echo form_error('name'); ?>
<?php echo form_error('email'); ?>
名前:<?php echo form_input($username); ?>
Eメール:<?php echo form_input($email); ?>
</p>

<p>コメント:<?php echo form_error('comment'); ?></p>
<p><?php echo form_textarea($comment); ?></p>

<?php echo form_submit($submit); ?>

<?php echo form_close(); ?>
2~24行
フォームヘルパー関数の form_input() を使って配列にして格納。
4, 10, 16行の set_value('') はエラー時のフォームに入力されたデータの再表示。
値はHTMLタグのname属性、value属性を入れたければ第二引数に値を入れればOK
27行
form_open('form') でフォーム作成スタート
29~40行
フォームの内容表示
30, 31, 36行 は form_error('fieldname') で個別のエラー表示。
41行
form_close() でフォーム作成終了
コントローラファイルを作る

application/controllers/ ディレクトリに board.php を作成
フォーム表示ビューを読み込むコードを書き込む

<?php

class Board extends CI_Controller {

    /*public function __construct() {
        parent::__construct();
    }*/

    public function index() {
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');

        $this->form_validation->set_rules('name', '名前', 'required|max_length[20]');
        $this->form_validation->set_rules('email', 'メール', 'required|valid_email');
        $this->form_validation->set_rules('comment', 'コメント', 'required|max_length[255]');

        if($this->form_validation->run() === FALSE) {
            $this->load->view('templates/header');
            $this->load->view('form');
            $this->load->view('comment');
            $this->load->view('templates/footer');
        } else {
            $this->load->view('templates/header');
            $this->load->view('success');
            $this->load->view('templates/footer');
        }
    }
}

※3/27 17:30追記:15行にルールセット valid_email を追加

5行
コンストラクタを使うかどうかは現時点で不明
なので、とりあえず書いておいてコメントアウト
10行
ヘルパー関数 form と url をまず呼び出し。
11行
ライブラリクラスから form_validation を呼び出し。
13~15行
from_validation のルール設定。
ルール設定の詳細は ここ を参照しました。
17行:入力内容に誤りがあったときの処理
$this->form_validation->run() === FALSE
これは ここ を参照。
18~19行:入力内容に誤りがあったときの処理
ビュー (header.php, form,php, comment.php, footer.php) を呼び出し。
22~25行:入力内容が正しいときの処理
ビュー (header.php, success.php, footer.php) を呼び出し。

header.php と footer.php はテンプレート化しちゃって読み込ませた方がいいだろうと作ってみました。
ページ遷移がないのでほとんど蛇足。
勉強も兼ねてってことでひとつ!


次はデータベースへの出入力あたりかな。