Codeingiterの基本的な使い方おさらい

Codeigniter

  • 軽量・高速
  • 拡張性高
  • 学習コスト低
  • 充実のユーザーガイド

ディレクトリ構成

  • index.php
  • application
    • controller
    • model
    • view
    • helpers 自作関数を置きます
    • libraries 自作クラスを置きます
    • config 設定
  • system 触れない

URL

http://sample.com/sample/(index.php)/Class/Method/引数

Class:デフォルトはwelcome Method:デフォルトはindex index.phpは表示しないようにできます。

ControllerとModelの共通規則

  • クラス名の最初は大文字にします。
  • ファイル名とクラス名は同じにします。

☆ Controller

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * index
 *
 * 
 */

// クラスの一文字目は大文字
class Greet extends CI_Controller //基底コントローラ継承
{

    function __construct()
    {
        parent::__construct() //初期化
        $this->load->library('form_validation'); //ライブラリロード
        $this->load->helper('form'); //ヘルパーロード
    }

    public function index()
    {
        //処理
        $this->load->model('モデル名');
        $a = $this->load->モデル名->all();

        $b['id'] = 1;
        $b['name'] = "マイケル";
        $this->load->view('ビュー名', $b); //Viewへ配列で値を渡すことが可能
    }

☆ Model

SQLを発行する方法と、Active Recordを用いる方法があります。

テーブル名と配列を渡すとSQLを生成します。

Active Record

Active Recordにより、最小限のコードでCRUD,値をエスケープできます。

  • get()
<?php

$a = $this->db->get('テーブル名', 30); // SELECT * FROM テーブル名 LIMIT 30;
  • insert()
<?php

$a = array(
     'name' => 'tanaka',
     'place' => 'america',
     'date' => 'today'
);

$this->db->insert('テーブル名', $a); // INSERT INTO テーブル名 (name, place, date) VALUES ('tanaka', 'america', 'today');
  • where()
<?php

$this->db->where(array('カラム名'=>3));
$a = $this->db->get('テーブル名');  // SELECT * FROM テーブル名 WHERE カラム名 = 3;
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * モデル
 *
 * 
 */

class Mymodel extends CI_Model //基底コントローラ継承
{
    function __construct()
    {
        parent::__construct(); //初期化
    }

    function ModelFunction()
    {
        //メソッド定義
    }
}

検証ルール設定

$this->form_validation->set_rules('nameの属性','バリデーション時の表示','検証ルール');

<?php

$this->form_validation->set_rules('username', 'ユーザ名', 'trim | required | min_length[5] | max_length[255] | xss_clean');

検証ルール

  • ruquired フォームが空だった場合false
  • matches[form_item] フォームデータが[]内の他のフォームデータと一致しない場合false
  • min_length[n] 指定したサイズよりも小さい場合false
  • max_length[n] 指定したサイズよりも大きい場合false
  • exact_length[n] 指定したサイズと同じでない場合false
  • alpha_numeric フォームデータが英数字でない場合false
  • alpha_dash フォームのデータが英数字、アンダースコア、ダッシュでない場合false
  • integer フォームデータが整数でない場合false
  • valid_email フォームデータがemail形式でない場合false

Controller

<?php

public function create()
{
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'ユーザ名', 'trim | required | min_length[5] | max_length[255] | xss_clean');
    if($this->form_validation->run() === FALSE) {
        //検証失敗時;
    }
        //検証成功...
}

フォーム検証

  • ユーザーにvalidationがかかった場合、エラーを表示できます。
<!-- set_valueは入力された値を取得します -->
<div class="form">
    <input type="text" name="username" size="15" value="<!--{set_value('username');}-->" />
</div>
<!-- form_errorはエラー内容を取得します -->
<!--{if !empty($form_error.username)}-->
    <!--{$form_error.username;}-->
<!--{/if}-->

set_valueで出力された値はhtmlspecialchars()を通っています。

URLのindex.phpを削除する

<?php

$config['index_page'] = '';