cakephp
前回の続き。 今回はCakePHP1.3.6のこちらのログをCakePHP2.5.5でなぞってビューを使ってみる。Cakeのルールでは、 コントローラーのプログラム名(Controllerの前:キャメル記法)で/app/viewsにディレクトリを作成する。ディレクトリ名はキャメル記法になる…
前回の続き。 今回はCakePHP1.3.6のこちらのログをCakePHP2.5.5でなぞってコントローラだけを使ってみる。CakePHPはCOC(Convention over Configuration)を採用したフレームワークなので、これに準じて確認用コントローラーを作成する。 コントローラーは、…
前回の続き。 今回はCakePHP1.3.6のこちらのログをCakePHP2.5.5でなぞってみる。 StaticはHTMLファイルは/app/webrootにおく。 例えば、 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>これはテストです。</title> <…</meta></head></html>
以前、CakePHP1.3.6を一通りレビューした(こちらから一連のログがある)が、訳あってCakePHPをまた使ってみることになった。以前のレビューに沿って、Cake2.5.5をMacOX+XAMPP+Eclipseでレビューする。 実行要件 Cake2.xの要件をCake book 2.xで見ると Apach…
しばらくインフラ仕事が多かったが、コードに復帰。 途中になっていたCakePHPのお勉強に戻ろう。少し離れていたら、Cakeのバージョンが1.3.8に上がっていたので、改めてそれを使うことにする。これまで、MySQLでサンプルを作っていたが、ポータビリティーの…
CakePHPにはシェル(バッチ)機能がある。 CakeのモデルはORMとして魅力的なので、バッチで使えると重宝だと思う。シェルの使い方については、CookBookの記事(1、2など)が参考になる。cakeコマンドは、 /cake/console にあるので、chmod 755で実行権限を…
有名なQdmailを使って、CakePHPからメイルを送ってみる。テストは、以前のログで設定したFedora13のbind9.7, postfix2.7, dovecot1.2の環境で行った。 インストール 本家サイトより、Qdmailをダウンロードする。ダウンロードしたのは、バージョン1.2.6b。 リ…
個人商店は忙しい。ここのところ、こまごましたことに振り回せれてる。 そういえば、HTML5は素晴らしい!!これも検証しないといけませんね。CakePHPでは、モデルにトランザクション・コントロールが用意されている。テストで使っているMySQL(5.1)のInnoDB…
自分の開発機は3台。 Sony VAIO X (windows7 32bit) DELL INSPIRON (windows7 64bit) Lenovo X60 (Fedora13 32bit) この中で一番使ってるのが、LenovoのFedora13。とっても軽くて、電池も長持ちする。 (最近、格安のx60と電池パックを買って、Ubuntu10.10…
ここのところVPSの設定をしたり、開発機を整理したりといったことをしている。VPSは劇的に安くなっているので、簡単なサーバーならこれを使えば結構使えてしまうのがうれしい。AWSも今一つ価格が落ちないので、VPSが安くなったことで、移行をしている人も多…
2009年のマイコミジャーナルの記事を参考にすれば、とっても簡単にExcelを動的に生成して、ダウンロードさせることができる。 Excel2007形式でダウンロード 以下のようなフォーマット(見出しとシート名)をテンプレートとしてよみこんで、簡単な見積書のダ…
Excelを吐き出したいというニーズは多い。 CSVを吐き出してExcelを起動するなら、ヘッダーにApplication/***と指定してあげればいい。参考はこちら。仲間がExcelReviserを使っているのだが、 メンテナンスが停止していそう。 Excel95-2003形式のみ対応。 Exc…
前回は、HABTM(hasAndBelongsToMany)の関係にあるデータの保存について書いた。順番が変ではあるが、データのメンテナンスパターンについて考えてみたい。 データの入れ方は、お客さんの希望で変わってしまうので決めつけることはできないが、自分的にはガイ…
CakePHPのHABTM(hasAndBelongsTOMany)が面白いので興味本位に見てきたが、さて、データを登録するときにどうしたらいいのだろ、と思った。これまで使ってきたItemとCategoryであれこれやってみた。 下のようなItem登録画面から、Categoryをマルチで選択して…
先のログで使ったカテゴリーのメンテナンス画面を作ってみる。モデルCategoryとItemはHABTMの関係にあるが、メンテナンスをする上では、カテゴリーを登録してから商品(Item)を登録する格好にする。なので、カテゴリーをメンテナンスする限りにおいては、It…
前回、前々回のログでは、HABTM(hasAndBetongsToMany)の関係にある2つのモデルに関してscaffoldを作ってみた。今回は、このモデルからデータがどう得られるのか確認する。 コントローラーの作成とデータの取得結果 一覧表を作る目的で、$paginateに何が入…
前回、categoriesテーブルとitemsテーブルをHABTMで関係づける際に、category_itemsという中間テーブルを作成した。調子にのって、このテーブルに以下のモデルを定義して、scaffoldでプログラムをジェネレートしてみる。 モデル category_item.php array( '…
モデルのアソシエーション(リレーション)として、これまで、hasOne、hasMany、belongsTo検証したので、HABTM(hasAndBelongsToMany)、つまり、N:Mの関係を検証してみる。scaffoldをやってびっくり。とっても簡単に定義できる。N:M(複数:複数)のリレーシ…
モデルのアソシエーション(リレーション)として、これまで、hasOne、hasMany、belongsTo検証したので、HABTM(hasAndBelongsToMany)、つまり、N:Mの関係を検証してみる。scaffoldをやってびっくり。とっても簡単に定義できる。N:M(複数:複数)のリレーシ…
先のログでAuthを使って、全てのコントローラーでログインチェックを行うことにした。 これは、面倒くさい。DRYじゃない。ということで、コントローラーのスーパークラスであるAppController.phpに設定してしまう。AppController.phpは、/cake/libs/controll…
前回のログに引き続き、usersテーブルをメンテナンスするプログラムを作成する。 今回は、hasOneの関係を試すために、user_attrsテーブルを以下のようなスキーマで作成する。 CREATE TABLE IF NOT EXISTS `user_attrs` ( `id` int(11) NOT NULL AUTO_INCREME…
Authコンポーネントを使って、以下のような認証を実装する。Mainというプログラムを作成し、以下のようなメニュー画面をつくる。 ここにアクセスするためには、以下のようなログイン画面を通すようにする。 また、メニューからログアウトすると以下のような…
画像アップロードを作った際に、モデルのinvalidateが言うことを聞かずにちょっとはまった。 multipartの部分は、あらかじめsaveの前にチェックしてエラーがあったら画面を戻してエラーメッセージを出したい。 invalidateを使うのは、入力値が残るため。これ…
前回の続き。 まず、以下のアップロード画面を作る。これがメイン。 プログラム名はDocとするので、/app/controllersにdoc_controller.phpを作成する。 ビュー /app/views/docsにadd.ctpを作る。 ファイルを複数uploadするには、DocImage.0.fileと同じ部分を…
前回の続き。 まず、以下のアップロード画面を作る。これがメイン。 プログラム名はDocとするので、/app/controllersにdoc_controller.phpを作成する。 ビュー /app/views/docsにadd.ctpを作る。 ファイルを複数uploadするには、DocImage.0.fileと同じ部分を…
前回の続き。 まず、以下のアップロード画面を作る。これがメイン。 プログラム名はDocとするので、/app/controllersにdoc_controller.phpを作成する。 ビュー /app/views/docsにadd.ctpを作る。 ファイルを複数uploadするには、DocImage.0.fileと同じ部分を…
ファイルアップロードをやってみようと思い、名高いMedia Pluginを試して、半日がかりでやってみたが、結局挫折。サイトを見て、おやおやと思ったのが、0.x系から飛んで、1.3RCが出てること。こういうのは経験的に危ない。YUI、Strutsなんかもそうですね。ア…
CakePHPではモデルを定義するだけで、基本的なSQLは書かなくていい。 だが、それだと困る場面もあると思う。 と思ってググってみると、shinbaraさんのブログにありがたいことが書いてあった(感謝です)。コードを見た方が早いので書いておく。 コントローラ…
つまらないことで30分もはまったので、覚え書き。 以下のように、円マークをつかって、金額をカンマ区切りで出そうと思い、Numberヘルパーを使った。 円マークを¥とするのは当たり前なんだけど、エスケープされてしまう。あれれ、と思ったら、numberヘルパー…
ORM(Object-Relational Map、もしくは、Object-Relational Mapper) モジュールでは、エンティティー間のリレーションが定義できることができるのが、一般的だ。話が脇にそれるが、先日、会社で教育をやったらエンティティー(Entity)という言葉に違和感を覚…