CodeIgniter3のチュートリアルをちょっと見てみようかの巻(2)

こんにちわ! NEKOGETです。
この記事はCodeIgniterアドベントカレンダーのために書きました! 8日目です!
https://qiita.com/advent-calendar/2017/code_igniter

9日目の記事はayatoさんによる
Dockerで作るCodeIgniterローカル開発環境 入門編でした!
まだ読めてない人はぜひ読んでほしいです☆☆☆

CodeIgniter3のチュートリアルをちょっと見てみようかの巻(2)って事で(2)なので(1)があります!
CodeIgniter3のチュートリアルをちょっと見てみようかの巻(1) の続きです。

チュートリアルの場所
本家(英語): https://www.codeigniter.com/user_guide/tutorial/index.html
ユーザー会(日本語): http://codeigniter.jp/user_guide/3/tutorial/index.html
@NEKOGET(日本語?): http://pneskin2.nekoget.com/codeigniter/3/user_guide/tutorial/index.html

今回も本家のチュートリアルを見ていきますね。

今回のお題は「ニュースを見る機能を作ろうぜ」 です
https://www.codeigniter.com/user_guide/tutorial/news_section.html

newsを保存しておくtableはこんな感じ。
個人的な好みで言えばここに新規登録日を追加したいところです。

環境の準備 : database

modelをつくる….. 前にDatabase用意しないとダメですね。
database名どうしましょう?

ci3_tutorial とでもしましょうか?

mysqlが入ってる事を確認。

mysqlの起動
mysqlのユーザーとパスワードを作成
databaseの作成
って感じですかね…

それからapplication/config/config.phpの編集です。

よしよし入ってる。
しかし起動してない。

起動してみる。

案の定rootにパスワードがないわコラって怒られる。

パスワードの設定

mysqlに接続
途中パスワードを聞かれるので上記で設定したパスワードを入力

文字コードの確認

utf8にしとく方が楽よねって事で、一旦mysql接続を解除して /etc/my.cnfを編集
まぁここら辺も含めてansibleに書いてし待った方がいいんだけども……
知っててほしいなあという気持ちもあり難しいね。

[mysqld] に serverがutf8ですよを追記

[client]セクションを追加。utf8dですよを記載

mysqlを再起動

mysqlに接続して文字コードを確認する。

filesystemはbinaryでいいよね。
他がutf8になった事を確認。

データベースの作成

データベースができてる事を確認する。

newsテーブル作ろうかw

テーブルができた事を確認する。

データベースの準備ができた!

config.phpの変更

次は設定だねー
DBに接続する設定書いておかないとダメだよねー
configの設定についてはなぜかチュートリアルにないんだよね。不思議だねー

application/database.php

‘username’
‘password’
‘database’
‘dbdriver’
の4項目を変更したよ。
postgresqlを使う場合は、’dbdriver’ は postgre だよ!

ルーティングの設定

チュートリアルには最後の項目で書かれてるんだけど、これ設定してないとブラウザ越しに見えないので先に設定しちゃおうか☆
CodeIgniter/application/config/routes.php

これはどういう設定かわかるよね?
news/ はNews Classのindex()が処理をする。
news/view/{何か文字列} は News Classのviewメソッドが引数を持って処理する
その他は、 Pages Classのviewメソッドが処理をする
って流れだね。

Modelの作成

まずはモデルの作成だね!
application/models/News.php
Codeigniter3からModelはClassなのでファイル名の最初の1文字目は大文字だよ!

あんまり好きじゃない書き方だけども、Modelのコードね。
slugが指定されてなければ全件をretunしてる。
slugが指定されている場合は、検索した結果を1件だけ返してるコードだね。
できればlimitの設定とorder by は指定したいところだね。

Controllerの作成

次はコントローラー
これも最初の1文字目は大文字だ。合算するとこれぐらいだよね。

チュートリアルのコードはこんな感じになるかな?

Viewの作成

チュートリアルをみるとviewをどう書くのかがすごく雑だね…..
ここで必要なviewは
application/views/templates/header.php
application/views/templates/footer.php
news一覧を表示させるための
application/views/news/index.php
application/views/news/view.php

この4ファイルになるね。!

application/views/templates/header.php

application/views/templates/footer.php

application/views/news/index.php
index.phpは一覧を表示するよ!

http://{EC2のインスタンスのURL}/news

まぁ、そうだよね。
表示されるのはタイトルだけだね。
だってまだ表示する記事ないんだもの。
mysqlに接続して、記事でーたを登録してみるね!

1件登録して見たよ。

http://{EC2のインスタンスのURL}/news へアクセス。

記事が1県表示されたね!!!

次にviewへアクセス
http://{EC2のインスタンスのURL}/news/first_message

表示されたかな???

次は [ニュースを登録する機能を作ろうぜ] を(3)って事で続きを記事に書こうと思うよ!!!