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システム制作の例を調べ、応用的な機能を実装してみてください。