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

CakePHP2 プラグインを駆使して問い合わせフォームを作ってみます♪

本投稿はわたくしオリジナルではなく、次の記事を自分なりに実践した勉強となります。

  • WEB+DB PRESS Vol.65|gihyo.jp … 技術評論社
    特集2 PHPフレームワーク実践活用 ~Symfony2,CakePHP,Silex~
    第3章:CakePHP最新開発スタイル 豊富なプラグインを用いた開発とCakePHP 2.0を体験……市川 快

作るものの簡単な仕様

  • お問い合わせ送信の前に確認画面を表示する。
  • お問い合わせの入力内容は DB に保存する。
  • E -mail は2回入力してもらい、一致しているかどうかのバリデーションチェックを行う。

お問い合わせフォームの実装流れ

  1. インストール、設定
  2. DB スキーマの用意とテーブル作成
  3. bake all で初期コードの自動生成
  4. プラグイン設置
  5. 確認画面の遷移を追加
  6. 確認画面のビューを追加
  7. 保存データのチェック
  8. 完成画面
カテゴリー
コンピューター

CakePHP2 の関数を使って IP アドレスを調べる方法を、メモ!

CakePHP2 の プレフィックスルーティングのページに、.htaccess の IP アドレスアクセス制限をかける方法! | oki2a24 では Apache の .htaccess を使う方法をメモしました。今度は、CakePHP2 に備わっている関数を使ってページを訪れた人の IP アドレスを取得する方法をメモします。

ポイント

  • コントローラーで、$this->request->clientIp(false)
カテゴリー
コンピューター

CakePHP2 で普通の update がしたいなら updateAll !

あっ、普通の update というのは、WHERE 区に自由な条件をつける、という意味です。今回、CakePHP2 にて次のことをやってみたのでメモします。

  • 好きな条件でテーブルを更新する。
  • あるカラムの値をインクリメントしたい。
  • updateAll だと modifiedを自動で更新してくれないのをなんとかする。
続きでズバッと解決します。
カテゴリー
コンピューター

CakePHP2 の プレフィックスルーティングのページに、.htaccess の IP アドレスアクセス制限をかける方法!

app/Config/core.php の prefix routes 部分に次のように書き、

	Configure::write('Routing.prefixes', array('admins', 'editors', 'authors'));

app/Controller/UsersController.php で admins_login() のようなアクションを書くことで、

  • http;//example.com/admin/users/login/

にアクセスすると admins_login() アクションを実行するようにできます。プレフィックスルーティングですね。

上記の例の場合、 editors と authors も設定しているので、http;//example.com/editors/users/login/ や http;//example.com/editors/authors/login/ で editors_login() や authors_login() を実行できます。

さてここで、admins には特定の IP アドレス以外からアクセスさせたくない!となったら、どうしたらよいでしょうか?やってみた記録をメモします。

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

CakePHP2 ドキュメントの「グループだけのACL」を検証しました♪軽くですけれども。

ACLを制御するシンプルなアプリケーション – CakePHP Cookbook v2.x documentation のグループだけのACL に書かれている関数を User モデルに追加すると、ユーザー単位ではなく、グループ単位の ACL とできる、とあります。

しかし、この関数をつけてもつけなくても「 aros テーブルは以下のようになるでしょう」とあるようなテーブル構造になりません。ナンデ?ウェブからユーザーを登録しても、aros テーブルにデータが登録されてしまいます。ナンデ?

そこで、この状態ですこしだけ検証してみましたのでメモします。

検証内容

  • グループだけのACL にある関数のあるなしで、任意のページにアクセスしたときに発行される SQL の違いを見ます。
  • グループだけのACL にある関数のあるなしで、MySQL に直接 INSERT したユーザーのアクセス権がどうなるか、違いを見ます。
カテゴリー
コンピューター

CakePHP2 の FormHelper 第2引数の escape オプションについて調べてみました。

以前 CakePHP2 でラジオボタンを作ったときに、ボタンをクリックしたら onclick に書いた関数を起動するようにしたかったときがありました。地味に躓いたので、ポイントをメモしておきます。

escape オプションのポイント

  • FormHelper 第2引数のオプションの値の中の文字列のエスケープも無効にできます。具体的な指定方法は、’escape’ => false 。ちょっと変則的な使い方、、、だと思います。
  • テキストエリアに ‘escape’ => false を指定すれば入力した文字列のエスケープが無効になります。これが基本的な使い方、、、だと思います。
  • escape オプションは指定しなければ true 。これがデフォルトです。
カテゴリー
コンピューター

CakePHP2 で JavaScript を使ってラジオボタンの選択でセレクトボックスの操作可能不可能を切り替えたい!

CakePHP2 で JavaScript を使いたいですが、いまさらながら初めてのことでしたので

  • CakePHP2 への JavaScript 導入方法
  • 簡単なサンプルの作成。ラジオボタンの一方を選択すると隣のセレクトボックスが操作できたりできなくなったりする。

の二つをメモします。

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

CakePHP2 で Form ヘルパーの dateFormat の日本語対応を、独自に修正したりしないで泥臭く対応する方法。

FormHelper::input の ‘type’ => ‘date’ を使うと一発で「年月日」のセレクトフォームを作れて幸せな気持ちになります。しかし!しかしはまりました。

年と月と、月と日の間に入れる文字列を自由にできないのです!そこで、不完全ながら何とかした記録を残しておきます。

なんとかしたソース

誕生日<?php echo $this->Form->datetime('User.birth_date', 'Y', null, array('minYear' => 1980,'empty' => '----','orderYear' => 'asc'));?>年
<?php echo $this->Form->datetime('User.birth_date', 'M', null, array('monthNames' => false,'empty' => '--'));?>月
<?php echo $this->Form->datetime('User.birth_date', 'D', null, array('empty' => '--'));?>日
<?php
if ($this->Form->isFieldError('User.birth_date')) {
	echo $this->Form->error('User.birth_date');
}
?>
カテゴリー
コンピューター

CakePHP2 でユーザ情報の更新ページみたいなのを作るときのメモ♪

ウェブサービスを利用しているとプロフィールページががあって、メールアドレスや、住所とか、変更できるようになっています。これを CakePHP2 で作るにはどうしたらよいか?なにが問題となったか?ポイントか?メモ程度ですが残しておきます。

メモるべきポイント

  • 同一内容を入力させるフォームとバリデーションチェックを行う。たとえば、メールアドレスとか、パスワードを修正するために、「確認のためもう一度入力してください」といったフォーム。
  • パスワードを更新する。パスワードのフォームは最初空で表示し、入力があった場合のみ、データベースのレコードを更新する。
  • 一度の post で複数テーブルの情報のバリデーションチェックを行い、情報の更新を行う。
カテゴリー
コンピューター

CakePHP2 。テーブルのカラム(列)は小文字にするとよいです♪

CakePHP- the rapid development php framework- Groups.jpg

ポイント

  • CakePHP の恩恵を受けるためにはテーブルのカラム名は小文字にしましょう!規約には明記されていないけど、きっと当たり前扱いなんでしょう♪