CakeをBake

2016年度用資料

以下の資料は、2016年度のデータベースの講義用です。

CakePHP2.x を使用した例です。

2017年度は CakePHP3.x を使用しています。

2017年度の受講生は部分的に参考にできるでしょう。

CakePHP にはコマンドコンソールから実行する bake コマンドがあります。

bake では、いくつかの質問に答えるだけで、自動的にモデル、ビュー、コントローラの phpやctpファイルを作成できます。

bake する前に、MySQLのデータベースにテーブルを作っておきます。

bake することで、テーブル名やフィールド名を元に、自動的にプログラムが作成されるという仕組みです。

参考記事: bakeによる高速開発 (1/8) http://libro.tuyano.com/index3?id=760001

やり方:

Blog3114888 など、以前CakePHPを設定したことのあるプロジェクトをコピーして利用する。
D:\XAMPP\htdocs\プロジェクトフォルダ(Blog3114888など)
 →期末課題ホルダ(hogehoge3114888)

にコピー

※データベースの接続設定を削除します

D:\XAMPP\htdocs\hogehoge3114888\app\Config\database.php を削除

コンソールを開きます。
D:\XAMPP\htdocs\hogehoge3114888\app
を開いて、あいたところ右クリックし、 Openenhanced console を開く

Command Window が開くので、

メニュー → View → Console window

※Command window のほうは使わない。日本語が文字化けするので。

ここからは、bake コマンドの使い方

次のコマンドを実行して、path を設定
set PATH=%PATH%;D:\XAMPP\php
次のコマンドで、bake を起動
Console\cake bake
以後、設定の質問に答えていく。
ここまでで、参考サイトの連載記事の 2ページ目 まで進んだ状態。
以後、参考サイトを読んでがんばる。http://libro.tuyano.com/index3?id=760001
途中、以下の4つの質問に対しては、ここで指示したように設定する。
Database Host: 
[localhost] > 192.168.201.xx (システムを動かすパソコンのIPアドレス)
  User: 
  [root] > cakephp (データベース設計演習 1/4 の回で作成したもの。作成していない場合は、そのまま進む)
Password:
> cakephp (データベース設計演習 1/4 の回で作成したもの。作成していない場合は、そのまま進む)
  Database Name: 
  [cake] >  hogehoge  ( MySQL に作成した期末課題用のデータベースの名前を入力)
  Table encoding?
[n] > utf8

ここまでで、 bake の準備完了。

ここで、期末課題用のテーブルが、mysql に作成済みの状況にしてください。PHPMyAdminで作業します。

bakeコマンドの動作確認や練習をするだけなら、 参照先の記事に掲載されている、サンプルテーブルを create table コマンドでSQLで作成します。

※参照先の記事のテーブル作成用SQLは、CakePHPの命名規約に従っていません。bake で不具合が出る場合があります。↓を使用してください。

テーブル作成後、再び Console\cake bake を実行し、 M(モデル) C(コントローラー) V(ビュー)の順に設定を行うと、自動的に各種 PHP ファイルや、 ctp ファイルが作成されます。

全自動一括作成する場合:

Console\cake bake all

テーブルが3つある場合は、3回実行。(メニューからモデルを番号で選択)

で全自動で全て設定完了できます。微調整無しで、全て標準の設定で作成する場合はこちら↑だけでOK。

bake コマンドを利用することで、

・管理者モード(ログイン認証後にアクセス可能となるページ)

・バリデーション(入力必須項目や、入力値のチェック)

・ページネーション(ページ内にデータ表示が収まらない場合に、自動的にページ分けしてリンクを作成する機能)

などが、簡単に課題のページに組み込めます。

ネットで使用方法探して、設定してみてください。

がんばりましょう。

作成例) scaffold で作成したページと同様のページが作成できます。モデルとコントローラーとビューのPHP や CTPファイルが作成済みなので、新規作成する場合に比べ、編集するだけでよいので楽です。

↑ ページネーションの設定が自動的にされる。デザインの変更には、 View/Layouts/default.ctp の修正も必要。

さらにカスタマイズする場合:

bake のメニューで M モデルの作成をする際に、 validation(バリデーション:入力データの検証 の設定ができます。

例) ↓ bake した モデルファイルに修正を加えて、 → の様な、 必須項目*文字数制限数字で入力 のチェックを加えた。

ログイン・ログアウトページの作成、認証管理

こちらのページに、Blogサイト制作練習の続きとして、ライターのユーザ登録および、ライターごとに記事を投稿管理する修正例が掲載されている。

http://book.cakephp.org/2.0/ja/tutorials-and-examples/blog-auth-example/auth.html

特定のページを、ログイン認証後にしかアクセスできないようにする場合、参考にするとよい。

例) Blogの記事閲覧は、ログイン不要、 投稿ページや、記事の修正、削除については、要ログイン とするなど。

実習室環境用のヒント)

CakePHPの設定を修正する。パスワードを直接保存しないようにハッシュ値を利用するが、設定用データがデフォルト設定のため、変更しないとエラーが出る(セキュリティ上の問題)。

変更例) Config/core.php の該当行の文字列を適当に編集する。

のリンクの記事にしたがって作業を開始。

・まず、 usersテーブルをMySQLに作成する。 この段階ではまだ、ユーザIDやパスワードは記入しない。

・app/Model/User.php をコピペで作成

・app/Controller/UsersController.php をコピペで作成

・app/View/Users/add.ctp をコピペで作成。 Usersフォルダを作成し、その中に保存。

・app/Controller/AppController.php を開いて、修正を加える。コピペでよいが、ペーストする場所に注意する。

コードを修正する。

'controller' => 'posts',

'controller' => 'ログイン後に移動するページのコントローラ',

に修正。

・app/Controller/UsersController.php ←コピペで作成したファイルにログイン・ログアウト処理の修正を加える。

・app/Model/User.php ←コピペで作成したファイルにログイン・ログアウト処理の修正を加える。

・app/View/Users/login.ctp をコピペで作成。 Usersフォルダの中に保存。

・作成システムのベースURL+/user/add にアクセスし、 ユーザ登録をする。IDとパスワードと、役割は admin か author を入力。

・作成システムのベースURL+/users/login にアクセスし、ログイン認証できるか確かめる。

・作成システムのベースURL+/users/logout にアクセスし、ログアウトできるか確かめる。

・↑の設定では、システム内の、 index データ一覧表示 と view 記事の表示 は、ログイン認証なし、その他のページ add edit delete については、要ログイン認証になっている。

・要ログイン認証の機能にアクセスすると、自動的にログインページが表示される。ログイン後は、一覧表示画面に移動する設定。

・ページのデザインを修正して、 ログイン・ログアウトのURLへのリンクを作っておくとよい。

作成例) ログインページ

作成例) ユーザ登録ページ

CakePHP によるWebシステム制作の例を調べ、応用的な機能を実装してみてください。