auto_incrementの初期値を設定する方法
ユーザーIDを1000番以下はテストアカウントとかにしたいなぁと。
テーブルを作るとき
create table users ( int unsigned auto_increment not null, ・・・ ) auto_increment = 1001;
後で変えるとき
alter table users auto_increment=1001;
設定した内容を確認
show table status where name = 'users';
でauto_increment値に次の番号が入ってる
Viewの部分を勉強する。
昨日はがんばりすぎたので、今日はviewについてさらりと勉強する。
はじめてのCodeIgniter
環境ができた。
で、まず初めにやることはやっぱしHello Worldでしょってことで、早速やってみる。
ディレクトリ構成の復習
今回のディレクトリ構成はこうしてる。hello_igniterってのがアプリ名だ。
~/htdocs/hello_igniter # エントリポイント ~/var/apps/hello_igniter # codeigniterの本体とかアプリのソースを置くところ
welcomeページが表示されていた
そういえば、前回環境を作ったときに
http://hogehoge/hello_igniter
ってURLでアクセスしたらwelcomeページが表示されていた。
これはなんで表示されているのか?
最近フレームワークはMVCが一般的だ。modelがあり、viewがあり、controllerがある。
で、どのcontrollerのどのメソッドを呼び出すのかを定義するルーティング用の設定ファイルがあるものだ。
CodeIgniterも同様だ。
ならきっとwelcomeページを表示する設定がルーティングファイルにあるはずだ。
ルーティングファイルは
~/var/apps/hello_igniter/application/config/routes.php
だ。これを見てみる。ちなみに以下はめんどくさいので、アプリケーションのルートディレクトリに移動しておく。
% cd ~/var/apps/hello_igniter
さてファイルを見てみる。
<?php $route['default_controller'] = "welcome"; $route['scaffolding_trigger'] = "";
と書いてある。おそらくdefault_controllerでデフォルトで呼ばれるコントローラを設定しているのだろう。
コントローラーはどこになるだろう?
application/controllers
だ。ここにwelcomeコントローラーがあるので見てみる。
% vi application/controllers/welcome.php
<?php class Welcome extends Controller { function Welcome() { parent::Controller(); } function index() { $this->load->view('welcome_message'); } }
なるほど。
Controllerを継承したクラスを作ってコンストラクタでparent::Controller();を呼び出せばいいんだな。
コントローラーの作り方は何となくわかった。
function indexのクラスはデフォルトで呼ばれるメソッドだろう。
この中の$this->load->view('welcome_message');っていうところでview(画面のPHP)を呼び出している。
ではviewのファイルはどこにあるか
application/views
だ。でここに先ほど呼び出していたwelcome_messageのPHPがある。
みてみよう。
% vim application/views/welcome_message.php
ファイルの中は長いので割愛。環境構築したときのwelcomeページのHTMLが書いてある。
これでだいたいの流れはわかった。
HelloWorld的なものを作る。
ここまでの内容で、今回作るべきファイルは二つあることがわかった。controllerとviewだ。
以下の用にhello controllerとhello viewを作る。
% vi application/controllers/hello.php % vim application/views/hello.php
コントローラー
application/controllers/hello.php
<?php class Hello extends Controller { function Hello() { parent::Controller(); } function index() { $this->load->view('hello'); } }
特に処理をしないのでhello.phpというviewを呼び出すだけだ。
ビュー
<html> <head> <title>こんにちは</title> </head> <body> <h1>Hello CodeIgniter</h1> <p>はじめてのCodeIgniter</p> </body> </html>
単なるHTMLファイルだ。
確認してみよう。
今回作ったファイルはどういうURLで動作させるのだろうか?
welcomeページは
http://hogehoge/hello_igniter/
で動作することができた。
これはルーティングファイルでデフォルトコントローラーにwelcomeコントローラを呼び出す設定をしてあったからだ。
設定していない場合は
http://hogehoge/hello_igniter/コントローラー名/メソッド名
でアクセスできるとのことなので
http://hogehoge/hello_igniter/hello/index
でアクセスできるのだろうかと思ったらページが見つからないと怒られる。
どうやらCodeIgniterではデフォルトではエントリポイントのindex.phpもパスに混ぜないといけないらしい。
なので
http://hogehoge/hello_igniter/index.php/hello/index
となる。
実際確認できた。無事Hello Worldだ。
ちなみにこのindex.phpをとりたい場合は.htaccessとかでとる必要がある。
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
な感じでrewriteさせるらしい。
長かった。
コード書くよりblog書くのに時間かかりすぎ。
きっとどこかで挫けると思います。
では。
なんてこった
僕が昨日ダウンロードしたCodeIgniterは
日本語化のパッチだった。
本体は別でダウンロードしなきゃいけないらしい。
なんということでしょう。
でもだれかに突っ込まれる前に気がついてよかった。
きっと僕のブログなんて誰も読んでいないから誰にもばれてないはずだ。
・・・もう帰ってもいいですか?