php
ORM(Object-Relational Map、もしくは、Object-Relational Mapper) モジュールでは、エンティティー間のリレーションが定義できることができるのが、一般的だ。話が脇にそれるが、先日、会社で教育をやったらエンティティー(Entity)という言葉に違和感を覚…
これまでのログではJavascriptを使ってこなかったが、使わないわけにはいかない。 レイアウトを使わずにテンプレート(ctpファイル)のみを使うのであれば、普通通りにscriptタグが使える。 だが、レイアウトを使いたい。 だが、たとえば、ctpファイルに <script>ale</script>…
こちらの記事の方がシンプルですね。どうもありがとうございました。 ==================================================================== よく間違ったURLを叩くと、以下のような画面が現れる。 とっても親切に、コントローラーがないよ、とか、アクシ…
CakePHPで秀逸だなぁと思うのが、このページネーション。とってもスマートに書くことができる。Myznalaでもオレオレ流のページネーションを提供しているが、自分で書くとなるとそれなりに面倒くさい。CakePHPでは、一覧表示画面に簡単なコードを追加するだけ…
それでは、顧客テーブル(customers)に更新、削除機能を実装して、とりあえずCRUDを完成してしまおう。更新は、前回の詳細画面に更新のためのリンクを張って実装する。 更新のリンクをクリックすると、以下のように更新画面に遷移し、更新ボタンで更新する…
今回は、これまでに作った一覧表示画面を修正して、明細参照の画面を追加する。 方法としては、以下のように、一覧にあるIDにアンカーを張る。 ここで、アンカーをクリックすると、以下のようなデータを照会する画面に遷移するようにする。 ポイントは、アン…
以前、scaffoldのログでモデルにバリデータを設定した。 実際にはいろんなパターンのバリデーションを適用するから、今回は自作のバリデータをモデルに設定する。 サンプルでは、これまで使ってきたモデルに対して、 名前;ひらがなに入力を制限する。 郵便…
前回のプログラムに、データの追加機能を追加する。初期画面は以下。 画面左下に、「登録」のリンクを張って、そこをクリックすると、以下の画面に遷移する。 また、いくつかのフィールドにバリデーション(Not empty)を実装して、エラーの場合、以下のよう…
今回は、前回の画面によくある絞り込み機能を追加する。 以下のように画面に入力フィールドを設け、それに合致するデータを一覧で表示する。 Formヘルパーを使うことで、入力後に送信しても入力フィールドがクリアされない。これは便利。 モデル モデルは先…
scaffoldを間にはさんでしまったが、以前のログの続きで、テーブルからデータを取得して一覧表示してみる。 以下がその画面。 モデルの作成 /app/modelにcustomer.phpを作成する。 コントローラーの作成 /app/controllersにcustomer_controller.phpを作成す…
CakePHPを勉強し始めて、Strutsが登場した頃の感覚がよみがえるのだが、決定的に違うのが、モデル(DAO:Data Access Object)にバリデーションを実装する点。 Strutsだと、印象としては画面の入力に対してバリデーションを行い、コントローラーでさばく。Str…
前回のログでは、CakePHPの「デフォルトレイアウト」を利用したscaffoldを作成した。 これはこれでいいのだが、他の画面とレイアウトを合わせたい、ということもあるだろう。 今回は、scaffoldに独自のレイアウトを適用してみる。以下が、初期画面(index画…
scaffoldのtimestampの件、解決しました。フィールド名に規約があるのですね。createdとmodifiedをDATETIME型にしたらscaffoldの画面から消えて、裏ではちゃんと動作しました(CakePHP1.3.14, PHP5.3.4, MySQL5.1.54, CentOS5)。どうもありがとうございました…
前置きが長くなったが、データベースを使ってみる。 CakePHPは、データベースに対して、「モデル」と呼ぶ独自のDAO(Data Access Object)を提供している。この場合のコンベンション(慣例、規約)は、 テーブル名は複数形(最後にsをつける)。 モデル名は…
今回は、以下のような画面をフォーム・ヘルパーで作ってみる。JavaEEをやっていた頃、Strutsのタグリブ(Taglib)で大はまりしたことがある。フォーム・ヘルパー(Form Helper)やHTMLヘルパー(HTML Helper)は、タグリブの臭いがするので、なんとなく気が…
前回のログでは、CakePHPに用意されたSanitizeライブラリ(プログラム)でサニタイズをした。実際のアプリでは、サニタイズや禁則処理を独自に実装したいことが多い。そこで、今回は独自のクラスを使ってサニタイズしてみる。入力は前回と同じで以下のように…
Formの入力値を処理するのに、最低限必要なのがサニタイズ。 下の画面のように、テキストフィールドに <script>alert('hello')</script> と入力して、以下のようになったらシャレにもならない。 CakePHPには、Sanitizeというライブラリー(プログラム)が用意されている。プロ…
前回、前々回のついでに、Formの送信先のアクションでコントローラーをダンプしてみる。 FormのメソッドはPOSTにするので、前々回のTestFormをコピーして、TestForm3を作成する。 index()で以下の画面を表示する。 コントローラーは以下。
「cake勉強中さん」からコードの間違いを指摘していただきました。 どうもありがとうございました。tetsuya.odaka 2010/11/30 =========================================== 前回は、以下の画面をmethod="post"で送信した。 今回は、getで送信して、コントロ…
「cake勉強中さん」からコードの間違いを指摘していただきました。 どうもありがとうございました。tetsuya.odaka 2010/11/30 =========================================== フレームワークを利用するということで、フォームにPOSTするときの挙動を調べてみ…
先のログでは、CakePHPに用意されたレイアウト使ってビューを作成した。 今回は、CSSやイメージを用意して、レイアウトをカスタマイズしてみる。 プログラム名はTestViewとするので、/app/controllers/にtest_view_controller.php、/app/viewsにtest_viewデ…
今回は、CakePHPのビューの覚え書き。 Cakeのルールでは、 コントローラーのプログラム名(_controllerの前)で/app/viewsにディレクトリを作成する。ディレクトリ名はキャメル記法になる。そのコントローラーから使うviewは、このディレクトリに入れる。 コ…
OpenBusinessSuiteのLite版(obs-lite)をリリースしてしばらく経つ。幸運にも、カスタマイズしたものを地域ポータルで使ってもらえる目処がたち、他にも展開してくれるという。以前から気にしていたのは、obsがMyznalaというオレオレ式のモジュール群で作ら…
秋口にFedora13をいじっていたが、覚え書きを残す前にFedora14が出てしまった。14を入れる前に、13でやったセットアップを覚え書きとして残しておこう。用途は「開発機」兼「よろず実験機」なので、インストールしているものには一貫性がないので悪しからず…
YUIも2.8.1。以前に書いたログと同じことを日本語で実装したくて、XHRDataSourceを使って書いたのだがうまくいかない。前にログを書いていたときのYUIのバージョンは2.6だった。仕様は簡単で、以下の初期画面で「カタカナ」で書かれた商品名を入力する。 す…
スクリプト言語は簡易に出力が取れるし、込み入ったことは書きたくないので、あまりデバッガーの必要性を感じなかった。 EzoGPの方でPHPのCommand Line Interface(CLI)を使う必要が出て、コードもUTF-8で書いているので、Galileo PDTからscriptの実行(プ…
以前、「これまで書いてきたログをまとめている」と書いた。ようやく、ある程度の格好になったので、SourceForge.jpでリリースにこぎつけた。このログにしばしば登場するmezawa氏とは、昨年より「EzoGP(えぞ・じー・ぴー)」というOSSプロジェクトを立ち上…
Javascriptでの禁則処理をエンハンスしたついでに、以前作成したPHPの方のプログラムにも同等の機能を実装しておく。 実装する機能は、 禁止する文字を■に置換するのは格好悪いので、化けそうも無い文字(列)に置換する。 というもの。禁止する文字と、その…
以前、作ったJavascriptでのコンバータ(禁則文字の置き換え目的)だが、あるアプリで使ったついで修正を加えた。この間のプログラムの以下の問題点を改善した。 1.禁則文字が続いた場合、■1つに置換されてしまう。 2.■に置換するのは格好悪いので、化…
これまで、Ajaxのログを延々と書いてきた。 理屈的には、Javascript + HTML + サーバーサイドプログラムで全て完結できそうなのだが、いざアプリを作ろうとすると、(旧来の)MVC2モデルが手放せないことに気がついた。とすると、テンプレートエンジンがかか…