FMCakeMixのUser Guide.pdfを参考に、CakePHP x FileMakerでWebアプリの作成方法を紹介する。FX.phpに添付されているFileMakerファイルをベースに、Paginationを使った一覧画面の実装方法を。前回よりCakePHP, FMCakeMixの規約を一部を紹介した。今回は規約にしたがい、実際にFileMakerデータベースを作成してみよう。
Hello, FMCakeMix! チュートリアル / FileMakerファイル・テーブルの作成
1から作るFMCakeMixチュートリアル、ここでは簡単な書籍管理を作成してみよう。管理するのは「書籍の情報」と「著者の情報」の2種類。
まずはFileMakerファイルを作成する。ここではファイル名を「fmcakemix_db.fp7」とした。
テーブル・フィールドの定義
続けてテーブルを作成する。まず思い出してほしいのは「モデルとデータベースの規約」。モデルのクラス名は単数形でキャメル記法をもちい、CakePHPのモデルに対応するテーブル名は複数系でアンダースコア記法をもちいる。
FMCakeMixのモデル名 | FileMakerテーブル名 | 用途 |
---|---|---|
Book | books | 書籍情報を格納 |
Author | authors | 著者情報を格納 |
2つのテーブルの関係性は「属する(belongsTo)」。booksテーブルはauthor_idを外部キーとしてauthorsテーブルのデータを参照する。
booksテーブルのフィールド
フィールド名 | タイプ | オプション | 備考 |
---|---|---|---|
id | 数字 | 番号自動入力, ユニークな値 | IDフィールド |
created | テキスト | レコード登録日時を格納 | |
modified | テキスト | レコード更新日時を格納 | |
title | テキスト | 書籍名 | |
author_id | 数字 | 著者との関連付けキー |
authorsテーブルのフィールド
フィールド名 | タイプ | オプション | 備考 |
---|---|---|---|
id | 数字 | 番号自動入力, ユニークな値 | IDフィールド |
created | テキスト | レコード登録日時を格納 | |
modified | テキスト | レコード更新日時を格納 | |
name | テキスト | 著者名 |
createdとmodifiedはCakePHPでは特別な意味を持っている。データベースのテーブル内でこれらのフィールドを用意しておけば、CakePHP側で登録日時と更新日時を補完してくれる。ここで注意してほしいのは、次の2点。
- datetime型のカラムを想定しているため、UNIXタイムスタンプ形式の日時が格納される
- 「FMCakeMix経由でレコードを登録・更新した場合」にのみ効果を発揮する
created、modifiedを日付タイプやタイムスタンプタイプとしてしまうと、日付/時刻の値が入力値の制限を満たさず、エラーが返ってしまう。また、これらの値は表示する際にdate()などで見やすい日付フォーマットに変換する必要がある。Webアプリ、FileMaker Pro両側からレコードを操作する場合は、これらの機能に頼らず、自動入力を設定したタイムスタンプのフィールドを用意しておいた方が良いだろう。
レイアウトの作成
FileMakerではテーブルを作成したときに、同名のレイアウトを作成する。ここではレイアウト名を「books_list」「authors_list」とした。
両レイアウトにはポータルを配置しない。
アカウントの設定、ファイル共有の準備
テーブル・レイアウトの準備が終わったら、FileMaker Serverで公開をする設定をおこなう。設定したアカウント情報、拡張アクセス権は次のとおり。
- アカウント: fmcakemix_user
- パスワード: fmcakemix_password
- アクセス権セット: 完全アクセス
- 拡張アクセス権: fmxml
用途に応じてアクセス権セットはカスタマイズする。FMCakeMixはFX.php(XML Web公開機能)を使って通信をおこなうので、拡張アクセス権はfmxmlを設定する。最後にFileMakerネットワーク設定で「ファイルへのネットワークアクセス」をすべてのユーザで許可するように設定する。
これでファイル共有の準備は完了だ。いったんファイルを閉じ、FileMaker Serverで公開する。
PHPの作成
規約にしたがってモデル、コントローラ、ビューファイルを作成していく。命名規則にしたがうと、2テーブルのPHPファイルはそれぞれ次のとおりに。
books
種類 | 名称 | ファイルパス |
---|---|---|
モデルクラス | Book | /app/models/book.php |
コントローラクラス | BookController | /app/controllers/books_controller.php |
ビューのテンプレート | - | /app/views/books/index.ctpなど |
authors
種類 | 名称 | ファイルパス |
---|---|---|
モデルクラス | Author | /app/models/book.php |
コントローラクラス | AuthorController | /app/controllers/authors_controller.php |
ビューのテンプレート | - | /app/views/authors/index.ctpなど |
追ってコントローラ、モデル、データベース設定の書き方を紹介していこう。