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

CakePHP2!Windows 、Linux で bake した時の文字コード、改行コードは何でしょう?

CakePHP の開発でも調べものでも楽できるところは楽したい!と思っています。そこで、楽の仕方を考えます。へたをすると、余計な手間やはまりどころにもなりかねませんしね♪

結論

  • Windows の XAMPP環境 で bake → 文字コード SJIS 改行コード CR+LF
  • CentOS で bake → 文字コード SJIS 改行コード LF

Linux で bake しても、SJIS になるとは、ちょっと意外でした。ちなみに、CentOS の文字コードは UTF-8 に設定されていました。

[root@oki2a24 oki2a24.com]# printenv | grep LANG
LANG=ja_JP.UTF-8

CakePHP の bake 方針案

一発で解決!できなかった、面白みのない結論ですけれども、これがよさそうです。

  • bake 環境は、Windows、Linux、どちらでもよい。
  • bake した生成ファイルは、文字コード、改行コードをまず変更する。
カテゴリー
コンピューター

CakePHP2 でのバージョン確認方法をメモしておきます!

時々、自分がどのバージョンの CakePHP で作業しているのかわからなくなるので確認方法をメモします。

  • lib/Cake/VERSION.txt の最後の行を見よ!
カテゴリー
コンピューター

CakePHP2 すべてのバリデーションをメモしておきます!

モデルを bake するときにバリデーションをつけることができます。最低限の設定が書かれているほか、オプションもコメントとして作成されるので、何かと便利です。

ただ、データベースにテーブルを作るほどでもないけれど、ちょっとお気楽にモデルを試験的に作成して、バリデーションをお手軽に設定して、、、というときに bake をわざわざするのは面倒です。

そこで、bake で出力されるバリデーションの全パターンを書いておくことで、お気軽にコピペできるようにしておきます♪

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

CakePHP2 でログインページをたくさん作る方法を考えました!

◆2012年10月17日、追記。◆

CakePHP2 でログインページをたくさん作る方法再び♪ | oki2a24 にてまったく違う考え方でログインページをたくさん作る方法をメモしました。

この投稿が参考になった!!!とコメントを残してくだすった方がいらっしゃいましたので、ほかにもお求めの方がいらっしゃいましたら併せて閲覧いただき、何かの参考になればうれしく存じます。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

ウェブサービスを作っていると、たとえば先生用のログインページはログインフォームだけでよいけれど、生徒用のログインページでは「新規登録はこちら!」のリンクも付けたい、、、ということがあると思います

ただし、ログイン処理はすべて同じとしたいのです。

しばらく悩んだのですが、prefix ルーティングで実現できそうです。

ポイント

  • appConfig/core.php の Routing.prefixes を修正して設定します。
    例:array(‘admins’, ‘editors’, ‘authors’)
  • コントローラーのアクション名で prefix ルーティングを使用することを知らせます。
    書き方は、ルーティング名 + アンダースコア + アクション名
    例:admins_login、editors_login、authors_login
  • ビューは、prefix ルーティング用に作成したアクションに対応するように作成します。
    例:admins_login.ctp、editors_login.ctp、authors_login.ctp
カテゴリー
コンピューター

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
カテゴリー
コンピューター

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

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

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

ポイント

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

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つの行が紐づいた状態でデータを取得できます。
  • モデルの連携は適当では駄目です。エラーとなります。または、変なデータが取れると思います。