• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

CakePHPでとりあえずサイトを作ってみる

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

CakePHPでアプリケーション作成 概要

どんなものでも流れを掴むには、
とりあえず使ってみるのが一番。
ここではマニュアル記載のサンプルページを構築してみる。
先のプロジェクト作成でデータベースの設定が終わっているのが前提。
まだの人はこちら→CakePHPのプロジェクトを作成する

データベース操作ツールを併用すること。
今回使用したのはDBDesigner4
データベースを作成する時は必ずER図を書くようにすること。

使用したのはMySQLのため、
他のDBを使った場合SQLが若干異なる場合がある。

実際仕事としてやる場合の製作の流れはこんな感じか。

  1. 画面遷移図作成
  2. データベーステーブルのカラム要素抽出
  3. データベーステーブル作成
  4. モデル作成
  5. ビュー作成
  6. コントローラ作成

今回は1,2はすでに出来ている物として話を進める。

作成するのはユーザー認証ページ。
ようするにログイン画面だ。

データベーステーブル作成

DBDesignerで下記のようなテーブルを書く。 UsersテーブルER図

[Database]-[Database Synchronization]をクリックし、
実際のデータベースと同期を取る。

発行されるSQLは以下のような物。

CREATE TABLE `users` (
  `idusers` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `users_login` varchar(128) NOT NULL,
  `users_password` varchar(255) NOT NULL,
  `users_firstname` text,
  `users_lastname` text,
  PRIMARY KEY (`idusers`),
  UNIQUE KEY `users_login_idx` (`users_login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

モデル作成

ジェネレーターを使ってModelを作成する。

$ php cake/scripts/bake.php testproject
[M]odel
[C]ontroller
[V]iew

What would you like to Bake? (M/V/C) 
> M

Possible Models based on your current database:
1. User

Enter a number from the list above, or type in the name of another model.  
> 1

Would you like to supply validation criteria for the fields in your model? (y/n) 
[y] > n

What is the primaryKey?  
[idusers] > 

Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) 
[y] > n


Model Name:    User
DB Connection: default
DB Table:   users
Primary Key:   idusers
Validation:    Array
(
)

Look okay? (y/n) 
[y] > y

Creating file /path/to/models/user.php
Wrote/path/to/models/user.php

Cake test suite not installed.  Do you want to bake unit test files anyway? (y/n) 
[y] > n

コントローラ作成

Modelの次はController作成。 これもジェネレーターを使う。

[M]odel
[C]ontroller
[V]iew

What would you like to Bake? (M/V/C) 
> C

Controller Bake:

Possible Controllers based on your current database:
1. Users

Enter a number from the list above, or type in the name of another controller.  
> 1

Would you like bake to build your controller interactively?
Warning: Choosing no will overwrite  controller if it exist. (y/n) 
[y] > 

Would you like to use scaffolding? (y/n) 
[y] > n

Would you like to include some basic class methods (index(), add(), view(), edit())? (y/n) 
[n] > n

Would you like to create the methods for admin routing? (y/n) 
[n] > 

Would you like this controller to use other models besides 'User'? (y/n) 
[n] > 

Would you like this controller to use other helpers besides HtmlHelper and FormHelper? (y/n) 
[n] > 

Would you like this controller to use any components? (y/n) 
[n] > 

Would you like to use Sessions? (y/n) 
[y] > 

The following controller will be created:

Controller Name:        Users


Look okay? (y/n) 
[y] > 

Creating file /path/to/controllers/users_controller.php
Wrote/path/to/controllers/users_controller.php

Cake test suite not installed.  Do you want to bake unit test files anyway? (y/n) 
[y] > n

ビュー作成

Controllerの次はViewを作成する。
これもジェネレーターを使う。

$ php cake/scripts/bake.php testproject

[M]odel
[C]ontroller
[V]iew

What would you like to Bake? (M/V/C) 
> V

View Bake:

Possible Controllers based on your current database:
1. Users

Enter a number from the list above, or type in the name of another controller.  
> 1

Would you like bake to build your views interactively?
Warning: Choosing no will overwrite  views if it exist. (y/n) 
[y] > 

Would you like to create some scaffolded views (index, add, view, edit) for this controller?
NOTE: Before doing so, you'll need to create your controlle
r and model classes (including associated models). (y/n) 
[n] > 

Action Name? (use camelCased function name)  
> index

The following view will be created:

Controller Name: Users
Action Name:     login
Path:            app/views/users/login.thtml


Look okay? (y/n) 
[y] > 

Creating file /path/to/views/users/index.thtml
Wrote/path/to/views/users/index.thtml

ウェブで動作確認

一度ウェブでアクセスする。
http://dozo.matrix.jp/users

CakePHP Rapid Development
Missing Method in UsersController

You are seeing this error because the action index is not defined
  in controller UsersController

If you want to customize this error message,
 create testproject/views/errors/missing_action.thtml.

Fatal: Confirm you have created the UsersController::index()
  in file : testproject/controllers/users_controller.php

<?php
class UsersController extends AppController {
   function index() {
   }
}
?>

Controllerにindexというメソッド(アクション)がないというメッセージ。
Controolerに空のメソッドindexというのを追加する。

<?php
class UsersController extends AppController {
 
        var $name = 'Users';
        var $helpers = array('Html', 'Form' );
   function index() {
   }
}
?>

アプリケーション作成へ続く


framework/cakephp/構築フロー.txt · 最終更新: 2007/06/03 19:39 by dozo