アーカイブ

2010 年 2 月 のアーカイブ

cakePHP覚書

2010 年 2 月 28 日 Jiro コメントはありません

テーブルに追加しておいたcreatedとmodifiedの項目。

これらの項目を追加しておくと自動的に追加した際と更新した際にタイムスタンプが登録されるはずなのだが

modifiedの更新日時が書き換えられていない。スペルを間違ってるのかなと心配になりググって見たら

cakePHP1.2からはmodifiedの項目はdefault Nullにしていないと更新されないようなのでテストしてみる。

うまく動作しました。ただdefault値をヌルにしたらSQLエラーで怒られたけど、よく見たらヌルを許可してなかっただけでした。

カテゴリー: cakePHP タグ:

cakePHP Vaildateプラグインにはまる

2010 年 2 月 26 日 Jiro コメントはありません

cakePHP画面開発しております。
ちょっと複雑な画面になってきて、チェックボックスをコントロールしたり、複数条件でのバリデートが入ってきたので

jQueryとプラグインを活用しています。javascriptによるクライアント側でのバリデートに便利なプラグインを導入しました。
ダウンロードはこちらから

利用にはjQueryが必要です。jQueryは、ループが不要でDOM内のエレメントをIDやタグ、クラスで引っ張ってきて簡単に更新が出来て
すごく便利です。書式も簡略化しているし、軽いのもいいですね。

さてvalidateプラグインを導入してフォーム内のバリデートを行うのですが、通常用意されているルールだけでは足りず
addMethodを利用して複雑な条件を孵化してみたのですがなかなか動きません。

//時刻大小チェックメソッド追加
jQuery.validator.addMethod("checkTime",
	function(value, element, params) {
		if(params[0]>params[1]){
			return true;
		} else {
			return this.optional(element);
		}
	},
		"時刻の指定が間違っています。"
	);

と書いて、時刻を選択するセレクトボックスの内容を渡すため

rules: {
	'data[Clinic][fromJikan1]': {
		required: "#ClinicJikantai0:checked",
		"checkTime": [$("#ClinicFromJikan1").val(),$("#ClinicToJikan1").val()]
	},

という風にセレクトボックスのvalueを渡してみたのですが、firebugで確認するとparamsに何も入ってきません。
昨夜はこれではまったままでした。

色々と調べた結果、どうもパラメータで渡せるのは単なる文字列だけみたいで、意味も無くfunctionの返値にしてみたりと
あがいたけどどうもなりませんでした。

結局エレメントのIDを文字列で渡して、メソッド側で処理することで成功しました。

書き直したのはこんな感じ。

jQuery.validator.addMethod("checkTime",
	function(value, element, params) {
		if (!$(params[2]).attr('checked')){return true;}
		if ($(params[0]).val() < $(params[1]).val())	{
			return true;
		} else {
			return this.optional(element);
		}
	},
	"時刻の指定が間違っています。"
);

セットする側は

rules: {
	'data[Clinic][fromJikan1]': {
		required: "#ClinicJikantai0:checked",
		"checkTime": ["#ClinicFromJikan1","#ClinicToJikan1","#ClinicJikantai0"]
	},

てことで、無事動作しました。prams[2]にはチェックボックスのIDをいれて、ここにチェックが入ってなければバリデートしないように
しました。

忘れないうちに自分で覚書。

カテゴリー: cakePHP タグ: , ,

cakePHP Debug-Kit導入

2010 年 2 月 23 日 Jiro コメントはありません

cakePHPを使ってテストサイトの製作にいそしんでおります。

当初はphpeditorやK2Editerを使って、php javascript cssなどのファイルをごしごしコーディングしていましたが、ひとつのファイルごとにWindowが開くし、コード補完も無いのでとても不便でした。
MVCで組み立てていくので、ひとつの画面作成するにもconroller view layout などなどたくさん開かないといけません。なんか良いのは無いかなと検討した結果Aptanaを導入しました。

eclipseのプラグインとしてではなくスタンドアロン版を使っています。eclipseは以前入れていたのですがなぜか動作しなくなっていました。スタンドアロン版でも充分便利です。
多少ですがコート補完があるとないとでは全然効率が違います。

IDEはやはり便利です。いくつもファイル開いても散らからなくて。しかし、コードウィンドの水平垂直分割が出来ないのが残念です。ひょっとしたら方法があるのかもしれませんが、見つけ切れていません。
知ってる人がいたら教えて欲しいw。

ダウンロードはこちらから。
日本語化はプレアデスのプラグインで簡単に出来ます。
Aptana 日本語化でぐぐれば出てきます。

php対応はインストール後にプラグインの追加でこれも簡単ですよ。

さて本題のcakePHP Debug-Kitプラグインですが。これもダウンロードして解凍したソースを
/app/plugins/に置くだけです。zipの中身をplugin配下にdebug-kitのディレクトリ作成して
そこにコピーでOKです。

そのままテストすると動作しません。ここでちとはまりました。
/app/controllers/app_controller.phpに以下のコンポーネント宣言を追加します。
public $components = array('DebugKit.Toolbar');

すでに何か追加していたら、DebugKitを付け加えてください。
/qpp/controllersにapp_controller.phpが無い場合は(初期設定のままだとありません。)/cake/libs/controllerからコピーして書き換えてください。

このデバッグキットはdebugの値を2以上にすると表示されます。
Sessionや変数、タイマーやメモリまで表示してくれて超便利です。これで開発が楽になりそうです。

ダウンロードDebugKit

カテゴリー: cakePHP タグ: , ,

cakePHPをやってみる

2010 年 2 月 13 日 Jiro コメントはありません

ご無沙汰してます。
随分長いことこのブログも放置状態でした。WordPressの方も現在は勉強ストップしてます。
ブログやCMSとして活用を考えていたのですが、他の仕事が忙しくて。

その中でMicroSoft系のWPFやWCFを使う機会がありました。
これもなかなか面白かったのですが、Windowsサーバーに依存しなければならない点が、やはり問題です。今回はC#を使ったのですがフレームワークを理解するのに時間がかかり大変でした。C#自体は、なかなか興味深い言語でしたがMVMVCという考え方は少し複雑すぎる気がしました。連結をなるべく疎にしたかったのですが、なかなかそうはならず。どうしても他の部分に依存する書き方になって悩みました。またSilverLightを使う案もあったのですが、まだ開発例が少ないしバグも多そうだったので従来のWPFをメインでクライアント開発しました。
サーバー側の開発はすごく便利で簡単でしたが、クライアントはまだまだ発展途上の気がしました。ClickOnesで配布できるクライアントを使うほうがブラウザ依存よりも使い勝手は良いのですが利用対象が絞り込まれた場合でないと難しい面もあります。

Adobe Airも同様ですね。

また勉強する機会もあるかもしれません。

あたらしいASPを考えていたので、WordPressよりもフレームワークの勉強をしようと思い立ちcakePHPをはじめました。
フレームワークとしてはZendなどのほうが良いのでしょうが、入りやすいということと、Zendも取り込めるので手始めとしてこれに決めました。

随分php触ってなかったので、なかなか思い出せずに苦労してます。こちらのMVCはシンプルでなかなか使いやすいです。最終的には画面UIはAjaxに頼ることになりそうですがその勉強もなかなか大変そうです。

サイトや本を買って勉強中ですが、やはり細かい部分は記述が言及していませんね。私のような初心者にもわかりやすいサイトが欲しいなあ。

調べてわかったことをブログにすこしづつアップして行こうと思ってます。

カテゴリー: cakePHP, PHP タグ: , ,
Get Adobe Flash playerPlugin by wpburn.com wordpress themes