6月
30
2009
0

[CakePHP]Viewからヘッダにスクリプトを追加する($script_for_layoutを利用)
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

各ビューファイルから内にスクリプトを追加する方法のメモ

// $javascript->linkでファイルを読み込む方法
echo $javascript->link("test", false);  // 第2引数をfalseするとレイアウトの$script_for_layoutに展開される

// スクリプトをヘッダに表示する方法
echo $javascript->codeBlock("コード", array("inline" => false)); // 第2引数にarray("inline" => false)を渡すとレイアウトの$script_for_layoutに展開される
Written by suzukenn in: メモ | タグ: ,
6月
16
2009
0

[CakePHP]組み込みバリデーションルール(マニュアル)
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

数値の大小判定をするバリデーションルールをCakePHP ポケットリファレンスで探したら載ってなくて、久しぶりにマニュアル見たらびびった(笑)

組み込みのバリデーションルール(Validation Rules) :: データのバリデーション(Data Validation) :: CakePHPによる作業の定石 :: マニュアル :: 1.2 Collection :: The Cookbook
知らなかったルールが山ほど!!なにこれ?増えたの?

とりあえず目的の数値の大小判定は”comparison”とわかったし、
”date”や”equalTo”,”extention”,”isUnique”まで!?(今までずっと自作メソッド使ってた…orz)
”Multiple”とか”inList”なんて知ってれば使いどころがあったのになぁ。
たまにマニュアル見たほうがいいですね^^)

更新を見逃さないようにfirefoxにrssフィードを登録しておきました♪

追記
dateとequalToはリファレンスに載ってた^^;

Written by suzukenn in: メモ | タグ: ,
6月
12
2009
0

[CakePHP]windowsの開発環境で気持ちよくbakeする方法メモ
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

昨日も書きましたがCakePHPを使ってショッピングサイトのリニュアル中です。

今回の僕は、かなり本気です。
今まではbakeなど使わずにすべて手作業でコントローラ、モデル、ビューを作っていましたが、そろそろそれも限界だろうと。おまえもいい歳なんだからと。そんな声が聞こえたような気がしたので、今回はbakeやらユニットテストやらを使ってなるべくプロっぽく楽に仕事をしようと決意しました。

予約してまで買ったCakePHPによる実践Webアプリケーション開発
と言う本に、コンソールを使った開発方法が書かれているのですが、あまりに難しそうでほとんど読まずにおいておいたのですが、今回ようやく陽の目を見ることになりそうです。

そこで本題。

windowsの開発環境で気持ちよくbakeする方法メモ

僕の環境
Windows XP Pro SP3
Xampp 1.7.0

Windwosの環境変数のPathにphp.exeを追加

まずはコマンドプロンプトから気持ちよくphpを動かすために、php.exeにパスを通しましょう。

  1. マイコンピュータ->右クリック->プロパティでシステムのプロパティを開く
  2. 詳細設定タブの下、環境変数ボタンを押して環境変数ウィンドウを開く
  3. システム環境変数のPathを選択し編集ボタンを押す
  4. もともと入っているパスを変更しないよう、削除しないように十分注意しながら*1 ;(セミコロン)で区切ってphp.exe間でのパスを追加する*2
  5. OKで閉じる。
  6. php.exeにパスが通っていることを確認するためにコマンドプロンプト*3 を立ち上げて「php -v」と入力してエンター。phpのバージョン情報が出たらパスが通った証拠です。

Cakeのプロジェクトの/cake/consoleのパスを通す

気持ちよくbakeコマンド*4 を使うためにconsoleフォルダにパスを通します。
ただし、プロジェクトは追加したり削除したりすると思うので、いちいちphp.exeみたいに環境変数のpathに書くのは大変。ということで、その都度セットしたいと思います。

  1. 「cd C:\xampp\htdocs\プロジェクトのフォルダ\cake\console」と書いてエンター。cakeの対象プロジェクトのconsoleフォルダに移動*5 します。
  2. 「SET PATH=%PATH%;%CD%」で、一時的に今いるディレクトリにパスを通します。
  3. 「cd ../../」で、プロジェクトのルート?に移動します。
  4. ためしに「cake help」で、ヘルプが出るかチェックします。出ればOK
  5. あとはお好きなようにbakeしちゃってください。

ちなみにプロジェクトのパスはコマンドプロンプトを閉じるたび再度設定しなくてはなりませんので注意してください。

多分パラメータを受け付けるbatファイルを書いてやればもっと簡単にセットできると思うのですが、いかんせん僕はbatファイルが書けないので、どなたか心優しい方が作ってくれるまで、毎回シコシコパスを通したいと思います。

bakeの使い方については僕もこれからなので、僕自身の必要に迫られればこのブログにメモしたいと思います。でも多分、bakeについて書かれている方はたくさんいますし、CakePHPによる実践Webアプリケーション開発にも詳しく書いてあるので、僕が書く必要は無いのかもしれませんね。

  1. 消すとアプリケーションによっては正常に動かなくなったりするかもしれないので良く注意してね♪何か起こっても僕知らないですからね♪ []
  2. xampp1.7.0のデフォルトでC\xampp\php かな? []
  3. Win+R->cmdとタイプして実行 []
  4. に限らずコンソール機能を []
  5. ドキュメントルートを変えていない場合で、cakeのファイルをドキュメントルートに置くのではなくサブディレクトリ?に置く場合の書き方です。 []
Written by suzukenn in: メモ | タグ:
6月
11
2009
0

【データベース】テーブル名の命名規則で悩んでいます
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

今、自社開発のショッピングカート*1 をリニュアルするプロジェクトに着手しております。

もともと超しょぼい自前のフレームワーク *2 で作っていたのですが、今回はもちろんCakePHPベースにしたいと思います。
旧ソースがあまりにクソ、もとい粗が多く、柔軟性も無いので、フルスクラッチで書き直し、データベース*3 もCakePHPの規約に合わせて一新してやろうと思います。

で、悩んでいるのが「データベーステーブルの名前」。
みなさんはどんな感じで名前をつけてますか?

今回想定されるテーブル数はおよそ30。
参考までにどんなテーブルを作るかというと、

マスタテーブル
余り変化が無く、データの編集がありえるテーブル。PrimaryKeyがデータテーブルにforeignKeyとして格納されることが多いテーブルで、顧客テーブル、商品テーブル、商品オプションテーブルなどを*4 マスタと考えています。
データテーブル
日常的に追加されていくテーブル。追加された後に編集されることはほとんど無い。売上テーブル、配送先テーブル、デザインテーブルなどをデータテーブルと考えています。
リストテーブル
本来はマスタテーブルなんだろうな~と思いつつ、マスタ以上に変動が無いテーブルをマスタと分けてリストテーブルとしています。都道府県テーブル、のしテーブル、配送時間テーブル、支払方法テーブルなど、一回設定するとまず変更とか追加、削除は無いようなテーブルです。

なぜこのように分けたいかというと、テーブルが増えると探すのに苦労するから^^;
たかだか30個くらいでしょ?と思われるかもしれませんが、最近目が悪くなってたったこれだけの数でも探すのに苦労するのです。
Modelファイルも然り、phpMyAdminのテーブル一覧然り、接頭語無しの一覧では目がチカチカしてしまう30才一歩手前の僕。

しかし、テーブル名の前に三種類のテーブルをあらわす接頭語が付いていると”俄然”探しやすくなるという。まあ、他愛もないお話で申し訳ないのですが、みなさんはどうしてるのかな?と思った次第です。

僕の場合、旧サイトでは
マスタ:m_テーブル名
データ:t_テーブル名
リスト:l_テーブル名
のようにしていたのですが、どんなものでしょう?かっこ悪い?
新しいサイトでもとりあえずは上の命名規則でいこうかと思いますが、ぜひともプロの方はどうしているのか、知りたいところでございます。

…ちなみに、
EC-CUBEはテーブルとマスタを接頭語でdtb,mtbで分けてますよね。
wordpressはテーブルの役割を示す接頭語は無いようです。
他にもtblやmstのような接頭語をどこかで見かけたことがあるような。。
みなさんのブログなどを見るとCakePHPではあまりそういう名付けをしている人がいないようなので、ちょっと気になってPOSTしてみました。

みなさんは、接頭語を「つける派?」「つけない派?」
もし、自分はこうしてるよ~ってのがありましたら、ぜひともご教示いただけるとありがたいです :-)

  1. 汎用性は無く自社独自の仕様。デコチョコの超簡易版みたいな機能をもってます []
  2. なんかの本に書いてあったソースまるパクリの^^; []
  3. 中身は旧から移植するけど []
  4. 一般的な用法はともかく僕はこれを []
Written by suzukenn in: 記事 | タグ: ,
6月
06
2009
2

[CakePHP]Debug_kitの使い方メモ
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

cakephperさんのSQL Explainコンポーネントが組み込まれて、さらに便利に使いやすくなったDebug_kitの使い方メモ。

最新のDebug_kitをダウンロード

これまたcakephperさんの作ってくださったgit2zip for Debug_kitより、zipされた最新版のソースを、両手合わせて拝みつつダウンロード。

pluginフォルダに入れる

解凍してできた「debug_kitフォルダ」をそのままフォルダごとCakephpの/app/pluginsに放り込む。

app_controllerのコンポーネントに指定

/app/app_controller.php*1 に、

var $components = array('DebugKit.Toolbar');

と、書いてコンポーネントとして追加する。

core.phpのdebug値を2にする

/app/config/core.phpのdebug値を、

Configure::write('debug', 2);

のように2にしてやる。

後はブラウザで開くと画面右上に見慣れたアイコンがあるのでClick!するとメニューが現れます。

TIPS

コントローラでvar_dump()やpr()すると、headerよりも上にデバッグ情報が出るのでDebug_kitがうまく動かない(かも)

あとがき

さらに詳しくはcakephperの日記(cakePHP1.2ベース)ブログの超便利なDebugkitを画面キャプチャ付きで解説 – cakephperの日記(cakePHP1.2ベース)に、キャプチャ付きで紹介されていますので、ぜひ参照してください。

私信ですがあちらこちらに活躍の場を広げているcakephperさんに、僕もとても刺激を受けています。cakephperウオッチャーのひとりとして、cakephperさんのご活躍さらにさらに期待しております!

  1. 無い場合は/cake/libs/controllerから/appにコピーして []
Written by suzukenn in: メモ | タグ:
4月
04
2009
0

[CakePHP]$session->flashを表示する際の注意
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

すごく初歩的な話で恐縮なんですが、過去何度もミスをしてるのでメモ。。笑わないでね

コントローラで

$this->Session->setFlash("なにがし");

とセットした値は/layout/default.ctpの

<?php $session->flash(); ?>

で、表示されるわけですが、
setFlashするときに第4引数にキーを与えて、自分で読み出すときに必ずやってしまうミスがこれ。

if ($session->check("Message.auth")) {
    // echoをつけちゃ駄目!!
    echo $session->flash("auth");
}

$session->flash();にechoをつけちゃうと$sessionヘルパーの返り値であるtrueまで表示しちゃうので、

<div id="authMessage" class="message">このページにアクセスする権限がありません</div>1

のように、余計な「1」が表示されます。

ホントくだらない事なんですが、Authコンポーネントをいじると毎回コレに引っかかっているような気がします…(苦笑)

Written by suzukenn in: メモ | タグ: ,
3月
26
2009
0

[CakePHP]1.2.2.8120のpaginatorでdescにならない件
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

概要

先日CakePHPの1.2.2.8120がリリースされましたが、既存のアプリを最新に置き換えたところPaginatorのソートがうまく動かなくなっていることが判明。早速ググってみるとフォーラムに下記の書き込みが。

(続きを読む…)

Written by suzukenn in: 記事 | タグ: ,
2月
21
2009
0

[CakePHP][BAD]コントローラ毎に書き出すjsScriptを変える
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

概要

jQueryを使い始めてからだんだんヘッダに書き出すjavascriptのメソッドが増えてきて収拾がつかなくなってきたので編み出したControllerに応じて出力するスクリプトを変える方法です。恐らく一般にバッドノウハウと呼ばれる代物になっているかと思いますので、参考にするしないは自己責任でお願いします。

(続きを読む…)

Written by suzukenn in: メモ | タグ: ,
2月
21
2009
4

[CakePHP]FormHelper::datetime()まとめ
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

概要

CakePHPのFormヘルパーのdatetimeのパラメータをいっつも忘れてそのたびにFormヘルパーのソースを調べるのが馬鹿らしくなってきたのでここら辺でメモしておきます。

(続きを読む…)

Written by suzukenn in: リファレンス | タグ: ,
2月
14
2009
0

[疑問][CakePHP]findのfieldsにconcat(文字結合)を使う
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

findのfieldsにconcatを使う際の疑問

今日はちょっとした疑問から。

例えば「ユーザ」というモデルがあって、フィールドが

  • id
  • name_l
  • name_f

のように苗字と名前が分かれていた場合に、「User->find(”list”)」で取得するリストを「array(id => name_l.name_f」にするにはどうしたらいいか?ということなんですけれども、こういう場合プレーンなSQLならconcat()*1 を使って、

select id, concat(name_l, name_f) as name from users

とやればidと結合されたnameのフィールドが取得されますよね。

じゃあCakeでやってみましょう。

(続きを読む…)

  1. 文字結合する関数 []
Written by suzukenn in: 記事 | タグ: ,

track feed HappyQuality | I have been indebted to Aeros Theme. | Background image owner is NASA.