荒屋敷智也のブログ

Cakephpフレームワークを使ってWebアプリ開発を気楽にやってみます②

当ブログではアフィリエイト広告を利用しています

今日もやる気を出すために、ブログにやったことをつぶやきながらWebアプリ開発チュートリアルをやっていきたいと思います。

MVCモデル設計でWebアプリ開発

MVCフレームワークとは?【WEBサービス開発の基礎】

MVCモデル【Model(モデル)・View(ビュー)・Controller(コントローラー)】というソフトウェア設計モデルがあり、この設計モデルの元、Webアプリ開発をしていく、必要があります。

まずは、Model(モデル)から作成

Modelの中には、「Entity」と「Table」というフォルダーがあるみたいです。

  • Table:リポジトリー や テーブルオブジェクト です。これらのオブジェクトを利用して、 データのコレクションへアクセスします。これらを利用することで、新しいレコードを保存したり、 既存データの編集/削除、リレーションの定義、そして一括処理ができます。
  • Entity:エンティティーは、個々のレコードを意味し、 行/レコードレベルの振る舞いや機能の定義を可能にします。
テーブル」「レコード」「カラム」「フィールド」とは?データベースの用語を理解しよう 「テーブル」「レコード」「カラム」「フィールド」とは?

Tableクラスの作成

  1. ArticlesTable.phpというファイルを作成。
  2. Cake/ORM/Table内のTableスーパークラスを継承して、新たにArticlesTableクラスを作成しました。
  3. ArticlesTableクラスには、initializeという初期化関数を追加しています。
  4. Articlesというテーブルでデータが追加・修正された際にタイムスタンプを行う関数。

私もまだよく分かりませんが、チュートリアルとして、まずはテーブルを作成しました。

Entityクラスの作成

  1. Articles.phpというファイルを作成。
  2. Cake/ORM/Entity内のEntityスーパークラスを継承して、新たにArticleクラスを作成しました。
  3. $_accessibleプロパティ(変数)を設定。
  4. データの誤操作を防ぐためEntityの持つプロパティへの代入可否を設定する $_accessible 機構が備わっています。

accessibleは、つまりデータベースの変更できる列を指定しているということかな?

とりあえず、モデルを作成したので、データベースへのアクセス・処理の制御は終わりということかな?

次は、Controller(コントローラー)の作成

MVCフレームワークとは?【WEBサービス開発の基礎】

Contollerでやること

  1. 「①リクエスト」を受け取る。
  2. リクエストに応じた処理を、先ほど作成したModelで行います。
  3. Modelで処理したデータをViewでどういう表示にするか要求。
  4. 「⑧レスポンス」を行います。

ArticlesControllerの作成

  1. ArticlesController.phpというファイルを作成。
  2. AppController.phpスーパークラスを継承して、新たにArticlesControllerクラスを作成しました。
  3. index関数を作成(これにより、indexへのリクエストがあった場合に、この関数が呼ばれるようになります。)
  4. データベースからページ分けされた記事を取得します。次に (これからすぐに作成する) テンプレートの中に記事を渡すために set() を使用します。

※「ページネーション」:データを一定数ごとにページ分けし、1ページずつ表示するもの。

※「Paginator」:ページネーションは、「Paginator」というコンポーネントとして用意されています。これを利用するには、コントローラー側のinitializeメソッドなどで、loadComponentを使ってロードしておきます。

View(ビュー)の作成

  1. templatesフォルダー内に、Articlesフォルダーを作成します。
  2. Articlesフォルダー内にindex.phpファイルを作成しました。

てっきり、Viewフォルダーに書いていくのかと思ったけど、Templateフォルダーに書いていくのか・・・

※ビューテンプレートは、アプリケーションのレイアウト内に挿入される表示用の PHP コード

controllerでセットしたarticle変数をviewテンプレートでも使用できるようになりました。$this->Htmlは、Htmlhelperで、今回のようなリンク作成などを簡単にやるためのものらしい。

とりあえず、ここまで書けば、データベースにアクセスして、適切なページが表示されるようになるみたいです。

表示されるようになりました。

Viewアクションの作成

次に、リンクを押した際のアクションを作っていきます。

前回作成した、ArticlesController.phpにView関数を追加します。

templtes/Articles/view.phpを追加しました。これで、viewページが見れるようになります。

記事の追加(add)アクションを追加

※FlashComponent:フォームの処理後やデータの確認のために表示する一回限りのメッセージ通知のこと。

  • リクエストの HTTP メソッドが POST だった場合、データベースのArticles テーブルにデータを追加
  • 失敗した場合、ただビューを描画します。

記事の追加(add)のビューテンプレート作成

 

記事の追加を行う、ページが表示されるようになりました。

viewでフォーム入力をしたことで、データベースにデータが追加されるようになりました。

シンプルなスラグ生成の追加

slugを生成することで、重複しない記事を作成でき、各記事のURL先も表示できるようになりました。

※IT用語で「位置を示すコード」等の意味があり、URL(パーマリンク)の末尾の部分を任意の文字列に指定できる機能

Editアクションの追加

Editテンプレートの追加

記事の編集ができるようになりました。

編集ボタンも追加しました。

バリデーターの追加

title フィールドと body フィールドの両方が空であってはならず、 長さに制約があることを指定しました。

※入力されたデータが正確であり、指定された形式や条件に従っているかを確認(= バリデーション)する機能

入力に条件を加えたことで、何も入力していない場合、怒られるようになりました。

deleteアクションの追加

チュートリアル(基本的な記事管理)アプリの作成完了

とりあえず、最低限の基礎は完了しました。最初よりは、抵抗感がなくなりましたが、

いろいろやってみないと、使いこなせる段階にはなかなかいかないですね。