ちょっと大きめのお仕事を受けることになりました
初のECサイトです
EC-CUBEを使おうかとか、昔取った杵柄とやらでガンガン生PHPを叩くかとか色々悩みましたが、予てからオススメを受けていたYiiというフレームワークを使ってみることにしました
なにしろ、私がまともにPHPを使っていた頃は、PHPはオブジェクト指向ですらなかったわけで、フレームワークというものがどういうものか、というところから理解しなければならないわけで...(先の長い話だ)
さて、本題。実際にフレームワークを使って、ちょっとしたECサイトのようなものを作ってみたいと思います
Yiiフレームワークのインストールと設定
インストール
インストール
この辺りを読んでその通りにやれば大丈夫
スケルトンアプリケーションの作成
以下のコマンドを実行して、基本になるスケルトンアプリケーションを作る
ついでに後でGiiを使うので、一時的にアクセス権を777に開放しておく
$ cd htdocs
$ php yii/framework/yiic.php webapp ec_site
$ sudo chmod -R 777 ec_site
・・・めっちゃ簡単
データベースの作成
今回は(も?)レンサバを使うので、悩む余地などなくMySQLを選択
htdocs/ec_site/protected/config/main.php
を以下のように修正
ついでに、少し手順を進めたところで、timezoneがうんたらという警告が出て進まなくなるので、timezoneの設定もしておく
return array(
...
'import'=>array(
'application.models.*',
'application.components.*',
),
// ↓この一行を追加
'timeZone' => 'Asia/Tokyo',
'modules'=>array(
...
'components'=>array(
...
// SQLiteをコメントアウト
/*'db'=>array(
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),*/
// uncomment the following to use a MySQL database
// MySQLをアンコメント
'db'=>array(
'connectionString' => 'mysql:host=<DBホスト>;dbname=ec_site',
'emulatePrepare' => true,
'username' => '<DB接続ユーザー名>',
'password' => '<DB接続パスワード>',
'charset' => 'utf8',
'tablePrefix' => 'ec_',
'initSQLs' => array("set time_zone='+9:00';"), // タイムゾーンを追加
),
...
phpMyAdminでお手軽にDB操作
ec_siteというデータベースを新たに作成し、以下のsqlファイルを作成してインポート
CREATE TABLE ec_user
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
mailaddr VARCHAR(128) NOT NULL,
password VARCHAR(128) NOT NULL,
auth INTEGER DEFAULT 0 NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE ec_user_profile
(
id INTEGER NOT NULL PRIMARY KEY,
firstname VARCHAR(20) NOT NULL,
lastname VARCHAR(20) NOT NULL,
kana_firstname VARCHAR(20) NOT NULL,
kana_lastname VARCHAR(20) NOT NULL,
corporation VARCHAR(50),
kana_corporation VARCHAR(50),
post VARCHAR(20),
zipcode VARCHAR(10) NOT NULL,
address VARCHAR(100) NOT NULL,
phone1 VARCHAR(20) NOT NULL,
phone2 VARCHAR(20),
fax VARCHAR(20),
email2 VARCHAR(128),
deliverable_zipcode VARCHAR(10),
deliverable_address VARCHAR(100),
point INTEGER DEFAULT 0 NOT NULL,
CONSTRAINT FK_user_profile FOREIGN KEY (id)
REFERENCES ec_user (id) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
テーブル名とか恥ずかしいからあんまりじっくり見ないでくだしあ///
Giiのインストール
htdocs/ec_site/protected/config/main.php
を編集してGiiを使えるようにする
return array(
...
// autoloading model and component classes
'import'=>array(
'application.models.*',
...
'modules'=>array(
// uncomment the following to enable the Gii tool
// アンコメントしてGiiを有効にする
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'<ここでGiiのパスワードを設定>',
// If removed, Gii defaults to localhost only. Edit carefully to taste.
'ipFilters'=>array('127.0.0.1','::1'),
),
),
...
下準備としてはこんなもんかな?