カテゴリー
コンピューター

CakePHP2 認証、Auth コンポーネントのサンプルを世界一シンプルを目指して作ります。

2014年10月11日追記

再び勉強してみましたの♪今度は bake を使用してもっと楽にサンプルを作成することができましたわ♪

★認証のお勉強内容

ログインしないとページにアクセスできないようにする、認証機能を勉強します。同時に、認証が不要なページを設ける方法も確かめます。できるだけシンプルな構造でいきます!

では、次のような認証前後でアクセスできるできないページ、を作成してみます。ログイン用のユーザは、1人だけ作ります。

URL はこんな感じです。

  • ログインページ
    • http://localhost/cakesample3/users/login
  • ログイン前後でアクセスできたりできなくなったりするページ
    • http://localhost/cakesample3/apples
    • http://localhost/cakesample3/beets
    • http://localhost/cakesample3/cherries

今回のサンプルを動かすと、ログイン前後でどのページにアクセスできて、どのページにアクセスできないのかをまとめた表です。

ページ ログイン前にアクセスできる ログイン後にアクセスできる
apples ×
beets ×
cherries
カテゴリー
コンピューター

CakePHP2 で Model::saveAssociated を使って1回で複数のテーブルにデータを保存します♪

CakePHP2 を勉強してきて、1つのテーブルにデータを入れるには Model::save を使えばよいし、やってみた記録を残してくださっている方々のページも見つかって心強いのです。

けれどもじゃあ、表示したページのフォームにいろいろデータを入力して、登録!とかクリックしまして処理を走らせたときに、2つのテーブルに1度に綺麗にスマートにデータベースに Insert する方法は、意外と見つかりません。

ですので、やってみました。記録を残します。

ポイント

  • アソシエーション設定済みの複数モデルのテーブルに1度にデータを保存するには、Model::saveAssociated を使う。
  • ちなみに、Model::saveMany はひとつのモデルに複数行を登録するときに使う、らしい(未検証)。
  • ちなみに、Model::saveAll は Model::saveMany または、Model::saveAssociated が実行される。慣れないうちは明確に saveMany、saveAssociated を使い分けたほうが無難かも。
カテゴリー
コンピューター

CakePHP2 を Eclipse で開発するまでのセットアップ手順をメモします♪

今更なのですが、わたくしが Eclipse (使っているのは Pleiades All in One 日本語ディストリビューション)で CakePHP の調べ物をしたりするときに、お手軽にセットアップしている方法をメモしておきます。

カテゴリー
コンピューター

Eclipse で CakePHP2 のビューの .ctp ファイルを扱うときのちょっとしたコツメモ

設定 20120725 230642.jpg

ビューファイル(*.ctp)を PHP ファイルと同等に開くための Eclipse 設定方法

  1. ウィンドウ(W) > 設定(P)
  2. 一般 > コンテンツ・タイプ
  3. テキスト > PHP コンテンツ・タイプ
  4. 追加
  5. 「*.ctp」 > コンテンツ・タイプの関連付けを追加のOK
  6. 設定のOK
カテゴリー
Microsoft

コマンドプロンプトで一時的にパス path を通します。

普段だったら、コンピューターのプロパティからシステムのプロパティを表示し、環境変数のシステム環境変数の path から設定する「パス」をコマンドプロンプトから設定します。

なお、今回の設定はコマンドプロンプトを閉じると無効になります

コマンドプロンプトで一時的にパスを通す方法

  • 現在のパスの確認方法 path
  • パスを通す方法 set path=%path%;C:\pleiades\xampp\php
    「;」が必要かどうか、事前に現在のパスを確認すること
カテゴリー
コンピューター

CakePHP2 で掲示板アプリ作り!不満をメモに残します!勉強しました!

CakePHP のアソシエーション!モデルを連携させて複数テーブルからデータを取得する勉強します! | oki2a24 の続きの投稿となります。

本を参考に、掲示板アプリを勉強しました。ただ、こう変えたほうがいいかもしれない、という点がいくつかありましたので、メモして残しておきます。

ポイント

  • 引数が必要だったり入らなかったりするアクションの場合、関数の定義で引数を書きますけれども引数がなかった場合に備えて null などを設定します。そうしないと、エラーが出ます。
    たとえば、public function edit($param = NULL) などとします。
  • FormHelperHtmlHelper をきちんと使いたい。直にタグを書いてごり押さないようにしたいです。
カテゴリー

時不知の手まり寿司490円

IMG_7684.JPG

半額でも490円!定価980円の高級お弁当です!写真がへたっぴですけれども、おいしかったです!

カテゴリー
コンピューター

CakePHP2 のアソシエーション!モデルを連携させて複数テーブルからデータを取得する勉強します!

CakePHP のバリデーションの基本を勉強します。 | oki2a24 の次の投稿となります。

以前ひとつのテーブルからのデータ取得を行いました。それも、モデルなしで。今回はモデルをしっかり使って、そしてテーブルは複数を連携させて、という例となります。2つのテーブルを使用しますが、連携のさせ方を網羅させて、しらみつぶしに動きを調べようと思います。

今回は、hasAndBelongsToMany を除いた hasOne、belongTo、hasMany の3パターンを取り扱います。

ポイント

  • モデルに連携したい相手のモデルを書く。書き方は、hasOne、belongTo、hasMany、hasAndBelongsToMany の4種類ある。
  • hasOne 1:1。相手テーブルに自テーブルの id 値を設定します。例、users テーブルの1つの行は、profiles テーブルの1つの行を持っている。
  • belongTo n:1。自テーブルに相手テーブルの id 値を設定します。例、users テーブルの1行は、recipes テーブルの多くの行を持つことができる。
  • hasMany 1:n。相手テーブルに自テーブルの id 値を設定します。例、recipes テーブルの多くの行は、users テーブルの1つの行に所属している。
  • belongTo と hasMany はどちらも1つに対して複数の対応ですが、1:n ( hasMany )の場合は1つの行に対して複数の行が紐づいた状態でデータを取得できます。一方、n:1 ( belongTo ) の場合は1つの行に対して1つの行が紐づいた状態でデータを取得できます。
  • モデルの連携は適当では駄目です。エラーとなります。または、変なデータが取れると思います。
カテゴリー
コンピューター

CakePHP2 のバリデーションの基本を勉強します。

CakePHP の FormHelper::input の使い方とバリデーションとの関係を勉強します♪ | oki2a24 の続きの投稿となります。

バリデーション、つまり入力チェックの基本を勉強します。

ポイント

  • モデルにバリデーション情報を書きます。
  • 書き方。
    public $validate = array(
    フィールド名。つまり DB のカラム名‘ => array(
    ‘rule’ => ‘notEmpty とかルールを記入‘,
    ‘message’ => ‘エラーメッセージ
    ),
    );
カテゴリー
コンピューター

CakePHP2 の FormHelper::input の使い方とバリデーションとの関係を勉強します♪

CakePHP。モデル未使用でデータベースデータ操作の基本を学習します♪ | oki2a24 の次の投稿となります。

バリデーションを設定したのに、メッセージが表示されません!本を読んでも、「表示されるはず!」と明記されています。アイエエ!ナンデ!?調べました。

ポイント

  • ビューで $this->Form->input() を使えばバリデーションのエラーメッセージを表示できる。
  •  ビューで $this->Form->text や $this->Form->text を使っても、バリデーションのエラーメッセージは表示されない。
  • $this->Form->error() でエラーメッセージを表示できる。みたいですけれど、どうにもまだうまくいきません><。

以下、FormHelper::input の詳細です。