CodeIgniterの知られざる基本

簡単なハズのCodeIgniterですが、以外に基本的なことが見つからなかったのでメモ。
データベースModelを作って使いたい人は多い、というよりも、それなしのWEBアプリを想像するほうがむつかしいのですが。。。ModelをViewへ展開するという一連の流れをメモしておく。

  1. DBを扱いたい場合、Controllerで、次のおまじないが必須。

    $this->load->database();

  2. モデルを呼ぶ場合は、

    $this->load->model(‘users’);

    なんて調子。これで、usersクラスが自動的に作られる。だから、Model, View, Controllerでクラス名はユニークであること。

  3. モデルでは次の一文で最終的にSQLの結果をもらうはず。

    $query = $this->db->get(‘usertable’);

  4. この$queryをモデルから返すときに、

    return $query->result_array();

    とするのがCodeIgniterでは便利。(理由は後述)

  5. コントローラー側では次のようにしてViewをインスタンス化する。

    $this->load->view(‘users_list’, $data);

  6. この$dataの理解が大事。Viewに渡された時点で、CodeIgniterが$dataを分解し、添え字を変数化する。これで変数ひとつでいろんなデータを集約してViewに渡すのである。例えば、$data[‘title’]= “ユーザーリスト”;と定義してあれば、Viewでは$titleで”ユーザーリスト”を参照できる。
    同様に、Modelでresult_arrayでコントローラーに戻した値は、$data[‘query’] = で渡してViewで展開することになる。つまり、コントローラでは

    $this->load->model(‘users’); // Modelインスタンス化
    $data[‘query’] = $this->users->list_all; // Modelのメソッドを呼び出しレコードセット(配列)を配列で受ける。
    $this->load->view(‘user_list’,$data);// $dataに集約し、Viewに渡す

    という流れになる。

  7. Viewではテーブル作成の一連のコードが肝。

    <table>
    <?php foreach($query as $row): ?>
    <tr>
    <td><?php echo $row[‘id’] ; ?></td>
    </tr>
    <?php endforeach; ?>
    </table>

まとめて要点だけ書いている文書を発見できなかったので、メモっておこう。

コメント