php

CakePHP1.3.6:テーブルのジョイン(join)

ORM(Object-Relational Map、もしくは、Object-Relational Mapper) モジュールでは、エンティティー間のリレーションが定義できることができるのが、一般的だ。話が脇にそれるが、先日、会社で教育をやったらエンティティー(Entity)という言葉に違和感を覚…

CakePHP1.3.6, jQuery1.4.3:Javascriptを利用する。

これまでのログではJavascriptを使ってこなかったが、使わないわけにはいかない。 レイアウトを使わずにテンプレート(ctpファイル)のみを使うのであれば、普通通りにscriptタグが使える。 だが、レイアウトを使いたい。 だが、たとえば、ctpファイルに <script>ale</script>…

CakePHP1.3.6:間違ったURLを叩かれた場合の対応。

こちらの記事の方がシンプルですね。どうもありがとうございました。 ==================================================================== よく間違ったURLを叩くと、以下のような画面が現れる。 とっても親切に、コントローラーがないよ、とか、アクシ…

CakePHP1.3.6:ページネーション(Pagination)。

CakePHPで秀逸だなぁと思うのが、このページネーション。とってもスマートに書くことができる。Myznalaでもオレオレ流のページネーションを提供しているが、自分で書くとなるとそれなりに面倒くさい。CakePHPでは、一覧表示画面に簡単なコードを追加するだけ…

CakePHP1.3.6:更新・削除処理を実装する(CRUD)。

それでは、顧客テーブル(customers)に更新、削除機能を実装して、とりあえずCRUDを完成してしまおう。更新は、前回の詳細画面に更新のためのリンクを張って実装する。 更新のリンクをクリックすると、以下のように更新画面に遷移し、更新ボタンで更新する…

CakePHP1.3.6:一覧表示にアンカーを張って、参照画面を実装する。

今回は、これまでに作った一覧表示画面を修正して、明細参照の画面を追加する。 方法としては、以下のように、一覧にあるIDにアンカーを張る。 ここで、アンカーをクリックすると、以下のようなデータを照会する画面に遷移するようにする。 ポイントは、アン…

CakePHP1.3.6:データの追加に自作のバリデーションを適用する。

以前、scaffoldのログでモデルにバリデータを設定した。 実際にはいろんなパターンのバリデーションを適用するから、今回は自作のバリデータをモデルに設定する。 サンプルでは、これまで使ってきたモデルに対して、 名前;ひらがなに入力を制限する。 郵便…

CakePHP1.3.6:データを追加する。

前回のプログラムに、データの追加機能を追加する。初期画面は以下。 画面左下に、「登録」のリンクを張って、そこをクリックすると、以下の画面に遷移する。 また、いくつかのフィールドにバリデーション(Not empty)を実装して、エラーの場合、以下のよう…

CakePHP1.3.6:入力値に合致するテーブルのデータを一覧表示する。

今回は、前回の画面によくある絞り込み機能を追加する。 以下のように画面に入力フィールドを設け、それに合致するデータを一覧で表示する。 Formヘルパーを使うことで、入力後に送信しても入力フィールドがクリアされない。これは便利。 モデル モデルは先…

CakePHP1.3.6:テーブルのデータを一覧表示する。

scaffoldを間にはさんでしまったが、以前のログの続きで、テーブルからデータを取得して一覧表示してみる。 以下がその画面。 モデルの作成 /app/modelにcustomer.phpを作成する。 コントローラーの作成 /app/controllersにcustomer_controller.phpを作成す…

CakePHP1.3.6:scaffoldにバリデーション(Validation)を適用する。

CakePHPを勉強し始めて、Strutsが登場した頃の感覚がよみがえるのだが、決定的に違うのが、モデル(DAO:Data Access Object)にバリデーションを実装する点。 Strutsだと、印象としては画面の入力に対してバリデーションを行い、コントローラーでさばく。Str…

CakePHP1.3.6:scaffoldに独自レイアウトを適用する。

前回のログでは、CakePHPの「デフォルトレイアウト」を利用したscaffoldを作成した。 これはこれでいいのだが、他の画面とレイアウトを合わせたい、ということもあるだろう。 今回は、scaffoldに独自のレイアウトを適用してみる。以下が、初期画面(index画…

CakePHP1.3.6:scaffold

scaffoldのtimestampの件、解決しました。フィールド名に規約があるのですね。createdとmodifiedをDATETIME型にしたらscaffoldの画面から消えて、裏ではちゃんと動作しました(CakePHP1.3.14, PHP5.3.4, MySQL5.1.54, CentOS5)。どうもありがとうございました…

CakePHP1.3.6:データベースをつかってみる。

前置きが長くなったが、データベースを使ってみる。 CakePHPは、データベースに対して、「モデル」と呼ぶ独自のDAO(Data Access Object)を提供している。この場合のコンベンション(慣例、規約)は、 テーブル名は複数形(最後にsをつける)。 モデル名は…

CakePHP1.3.6:フォーム・ヘルパー(Form Helper)をつかってみる。

今回は、以下のような画面をフォーム・ヘルパーで作ってみる。JavaEEをやっていた頃、Strutsのタグリブ(Taglib)で大はまりしたことがある。フォーム・ヘルパー(Form Helper)やHTMLヘルパー(HTML Helper)は、タグリブの臭いがするので、なんとなく気が…

CakePHP1.3.6:入力値を独自プログラムでサニタイズ(Sanitize)する。

前回のログでは、CakePHPに用意されたSanitizeライブラリ(プログラム)でサニタイズをした。実際のアプリでは、サニタイズや禁則処理を独自に実装したいことが多い。そこで、今回は独自のクラスを使ってサニタイズしてみる。入力は前回と同じで以下のように…

CakePHP1.3.6:入力値をサニタイズ(Sanitize)する。

Formの入力値を処理するのに、最低限必要なのがサニタイズ。 下の画面のように、テキストフィールドに <script>alert('hello')</script> と入力して、以下のようになったらシャレにもならない。 CakePHPには、Sanitizeというライブラリー(プログラム)が用意されている。プロ…

CakePHP1.3.6:コントローラーをダンプしてみる。

前回、前々回のついでに、Formの送信先のアクションでコントローラーをダンプしてみる。 FormのメソッドはPOSTにするので、前々回のTestFormをコピーして、TestForm3を作成する。 index()で以下の画面を表示する。 コントローラーは以下。

CakePHP1.3.6:フォームの利用(GETで送信)

「cake勉強中さん」からコードの間違いを指摘していただきました。 どうもありがとうございました。tetsuya.odaka 2010/11/30 =========================================== 前回は、以下の画面をmethod="post"で送信した。 今回は、getで送信して、コントロ…

CakePHP1.3.6:フォームの利用(POSTで送信)

「cake勉強中さん」からコードの間違いを指摘していただきました。 どうもありがとうございました。tetsuya.odaka 2010/11/30 =========================================== フレームワークを利用するということで、フォームにPOSTするときの挙動を調べてみ…

CakePHP1.3.6のレイアウトの利用

先のログでは、CakePHPに用意されたレイアウト使ってビューを作成した。 今回は、CSSやイメージを用意して、レイアウトをカスタマイズしてみる。 プログラム名はTestViewとするので、/app/controllers/にtest_view_controller.php、/app/viewsにtest_viewデ…

php5.3.3+CakePHP1.3.6のビューの基礎

今回は、CakePHPのビューの覚え書き。 Cakeのルールでは、 コントローラーのプログラム名(_controllerの前)で/app/viewsにディレクトリを作成する。ディレクトリ名はキャメル記法になる。そのコントローラーから使うviewは、このディレクトリに入れる。 コ…

php5.3.3(Fedra13)でCakePHP1.3.6を使ってみる。

OpenBusinessSuiteのLite版(obs-lite)をリリースしてしばらく経つ。幸運にも、カスタマイズしたものを地域ポータルで使ってもらえる目処がたち、他にも展開してくれるという。以前から気にしていたのは、obsがMyznalaというオレオレ式のモジュール群で作ら…

Fedora13のセットアップ

秋口にFedora13をいじっていたが、覚え書きを残す前にFedora14が出てしまった。14を入れる前に、13でやったセットアップを覚え書きとして残しておこう。用途は「開発機」兼「よろず実験機」なので、インストールしているものには一貫性がないので悪しからず…

YUI2.8.1で日本語をAutoCompleteする

YUIも2.8.1。以前に書いたログと同じことを日本語で実装したくて、XHRDataSourceを使って書いたのだがうまくいかない。前にログを書いていたときのYUIのバージョンは2.6だった。仕様は簡単で、以下の初期画面で「カタカナ」で書かれた商品名を入力する。 す…

Eclipse3.5(Galileo) PDT でデバッグ

スクリプト言語は簡易に出力が取れるし、込み入ったことは書きたくないので、あまりデバッガーの必要性を感じなかった。 EzoGPの方でPHPのCommand Line Interface(CLI)を使う必要が出て、コードもUTF-8で書いているので、Galileo PDTからscriptの実行(プ…

Myznala(みずなら)

以前、「これまで書いてきたログをまとめている」と書いた。ようやく、ある程度の格好になったので、SourceForge.jpでリリースにこぎつけた。このログにしばしば登場するmezawa氏とは、昨年より「EzoGP(えぞ・じー・ぴー)」というOSSプロジェクトを立ち上…

Javascript+PHP5で禁則処理をする(その2)

Javascriptでの禁則処理をエンハンスしたついでに、以前作成したPHPの方のプログラムにも同等の機能を実装しておく。 実装する機能は、 禁止する文字を■に置換するのは格好悪いので、化けそうも無い文字(列)に置換する。 というもの。禁止する文字と、その…

Javascriptで禁則処理をする(その2)

以前、作ったJavascriptでのコンバータ(禁則文字の置き換え目的)だが、あるアプリで使ったついで修正を加えた。この間のプログラムの以下の問題点を改善した。 1.禁則文字が続いた場合、■1つに置換されてしまう。 2.■に置換するのは格好悪いので、化…

SmartyをDwooに移行する

これまで、Ajaxのログを延々と書いてきた。 理屈的には、Javascript + HTML + サーバーサイドプログラムで全て完結できそうなのだが、いざアプリを作ろうとすると、(旧来の)MVC2モデルが手放せないことに気がついた。とすると、テンプレートエンジンがかか…