2008-01-01から1年間の記事一覧

CakePHP1.2finalとRC3のパフォーマンス比較

2008/12/30追記 パフォーマンステストですが、今回のテスト環境で単純なhtmlファイルのみに対して多重アクセスして計測したところ9req/secというありえないぐらい低い数値になってしまったので、テスト環境に不備があるかもしれません。1月半ばまでアメリカ…

Securityコンポーネントを使うときの注意点と特定アクションにBASIC認証をかける

CakePHP 1.2 RC3を利用しています。 Securityコンポーネントを使うと、Admin用コントローラやアクションのみにBASIC認証をかけるとかできて、色々と便利です。 その他にも、コンポーネントとして読み込むだけでフォームにトークンを埋め込んで、埋め込んだト…

Qdmailで件名がうまく表示できなかった件

CakePHP 1.2 RC3を利用しています。 CakePHP 1.2 Finalが出たのでそろそろ乗り換えないと。。。 CakePHPでの開発時、コンソール処理も含めてメール送信はQdmailを使わせてもらってます。日本語メールでCakeから安心して使えるコンポーネントなので、助かって…

CakePHPがセッション管理時にセットするCookieのパスを自由に設定(サブドメイン編)

CakePHP 1.2RC3を利用してます 偶然に発見した記事なのですが、CookeでセットするパスにTOPレベルドメインをセットし、サブドメインを含む同一ドメイン間でセッションを引き回す場合の方法が下記の記事に書いてありました。 http://www.cake-toppings.com/20…

CakePHPがセッション管理時にセットするCookieのパスを自由に設定

CakePHP 1.2RC3を利用してますCakePHPは、セッション管理時に発行するCookieのパスをwebrootが設置してあるパスに自動セットします。 例えば、 /home/myname/public_html/cake/webroot というディレクトリ構成でURLが http://www.example.com/cake/xxxxx と…

よくある同一内容を入力させる時のバリデーションチェック

CakePHP 1.2RC3を利用してます会員登録画面などで、メールアドレスやパスワードを2回入力させ、その内容が一致しているか判定するのってよくありますよね。CakePHPのバリデーションチェックで、独自ルールを作ってそれに対応する方法です。 Viewにて入力項目…

開発環境と本番環境で設定情報を使い分ける

CakePHP 1.2です。例えばサーバから送信するメールのFromアドレスなど、開発環境と本番環境で設定情報を使い分ける場合、bootstrap.phpなどにその情報を書いておいて、開発環境と本番環境のbootstrap.phpのファイルを別管理するなどありますが、出来れば開発…

ユニークなIDを生成する方法

CakePHP 1.2RC3を利用しています。ユーザ登録などでアカウントアクティベーションする際に、ユニークなIDを含むURLを発行してメールで送信し、そのURLにアクセスさせる方法は良く見られます。ユニークIDをphpで出力する一例として md5(uniqid(rand(),1)); と…

よくある確認画面でのhiddenデータの持ち回り ver2

CakePHP 1.2 RC3を利用しています。前に書いた記事 よくある確認画面でのhiddenデータの持ち回り で、自作ヘルパーを呼び出す際に、引数にモデル名を入れて、POSTされた該当モデル名のデータを展開してhiddenにセットしていたのですが、引数に何も指定せず、…

cakeの便利なライブラリを使ってみよう(Socket編)

環境はCakePHP 1.2RC3です。結構前にcakeの便利なライブラリを使ってみよう(xml編)というエントリーを書いたのですが、今回はソケット編です。 Cakephpには便利なライブラリがcake/libs以下にあります。 例えば、http_socketであれば、簡単にhttp通信が行え…

よくある検索画面でPaginationを使う

2008/12/25追記 ソースコードの中にコメントとプログラムを追記しました。これがないとXSSが発生する可能性があるのでご注意下さい。 cakePHP1.2 RC3を利用してます。よくデータの管理画面なんかで、簡易検索機能として検索条件を入れて、その結果を一覧表示…

events.php.gr.jpのソースコード

http://coderepos.org/share/browser/websites/events.php.gr.jp/trunk/app上記のURLで、 http://events.php.gr.jp/ のサイトの実装が見れます。 参考になるなぁ。

やっと一息つける

この3週間ほど死ぬほど仕事した。昔だったらフレームワーク使わずに普通に作って4人月ぐらいかかるのを、この1.5ヶ月ぐらいで一人でやりきった。CakePHPのおかげで生産性を高めることができたので、間に合ったよ。多分生産性2倍以上にはなったな。すばらしい…

updateAll時のアソシエーションを解除

環境はCakePHP1.2 RC3です。「updateAllで一気に複数レコードのUpdate」 http://d.hatena.ne.jp/cakephper/20081114/1226656901 で書いたように、updateAllを使えば一気に条件にマッチしたレコードをUpdateできます。ただ、モデルにbelongsToなどのアソシエ…

updateAllで一気に複数レコードのUpdate

CakePHP1.2 RC3の環境です。CakePHPは、saveメソッドでデータを保存する際に、データの配列のキーにidがあればUpdate,なければInsertしますが、これだと複数レコードを一気にUpdateするのは大変そうです。 例えば、年齢カラムがあり、年齢が20才以上の人の飲…

[CakePHP][View] よくある確認画面でのhiddenデータの持ち回り

2008/12/10追記 コメントでアドバイスをいただいたので、ヘルパーを改良しました。この記事はこのまま残します。改良したヘルパーは下記の記事に掲載しました。 よくある確認画面でのhiddenデータの持ち回り ver2 CakePHP1.2RC3を利用しています。よくある画…

Paginationの検索条件URLを取得する

利用環境はCakePHP1.2RC3です下記の記事で書いた、 http://d.hatena.ne.jp/cakephper/20080907/1220796088 Paginationでの検索条件の引継ぎですが、基本的にsortやnextメソッド時に勝手にURLがくっついてくれるのですが、ソートとかページング以外の箇所のリ…

paginationのソート表示で、画像を使う

利用環境はCakePHP1.2RC3ですViewのPaginationヘルパーで、下記のようにすると簡単にソート機能を使うことができます。 sort('id');?>Paginationでの検索条件の引継ぎなどは、下記の記事を参照下さい。 http://d.hatena.ne.jp/cakephper/20080907/1220796088…

SessionのAutoStartをOffにして、手動でセッション管理 (セッションコンポーネント編)

環境は、Cake1.2RC3です。昨日の記事で、CakeSessionクラスを使って、セッションで発行されるCookieパスをコントロールすると書きましたが、セッションコンポーネントで出来ました。 http://d.hatena.ne.jp/cakephper/20081010CakeSessionクラスをそのままne…

SessionのAutoStartをOffにして、手動でセッション管理

cakeのcore.phpでは、下記のように標準でセッションのスタートが自動的にONになってます。 Configure::write('Session.start', true);ただ、このAuto Startを使うと、Cookieの発行も自動的にされ、Cookieにセットするパスの値が、CakeのROOTディレクトリにな…

CakePHP1.2 RC3にアップデートしたらSelectでワーニング

CakePHP1.2 RC3がリリースされたので早速 cakeフォルダを入れ替えてアクセスしてみたら、$form->selectタグでワーニングが出てた。 ワーニングはarray_marge関係のエラーで、cake/lib/view/helper/form.phpのエラー行を見ないとSelect関係のエラーだとは分か…

cakeはUTF8で、入出力だけSJIS変換

モバイルとか、既存のSJISで作られたシステムの移行とかで、どうしてもhtml側はSJISにしたいけど、cake使うからこの際システムやDBはUTF8ベースにしたい、そんな感じのことをやる場合。入力(POSTなど)でphp側で文字コード変換をしてない場合を前提としてい…

なぜか$this->Model->Saveがうまくいかないとき

かなりハマッタ。そしてこんなことに時間をかけてしまい、かなり悲しい。フォーム→確認画面→完了画面の流れで、なぜかあるパターンだけDBにSaveできない現象が発生。とくにPOSTされたデータを見ても怪しいところはない。確認画面では、下記のようにバリデー…

Viewに関する備忘録

Viewに関して色々と忘れそうなのでメモ■エレメントを読み込み views/elements/navi_header.ctpの読み込み element("navi_header" ); ?> ■フォーム開始タグでURLを指定 URLにhttpから記載すればどのファイルへもPOST/GETで渡すことが可能 create('Model', arr…

お好きなファイルをViewファイルにする

Cakephp1.2RC2の環境です。コントローラで下記のようにすればOK. $filename = 'hoge.html'; $template = VIEWS . $this->viewPath . DS . $filename ; $this->render(null,null, $template ); renderの第2引数はレイアウトファイルの指定なので、レイアウト…

Net_UserAgent_MobileをcakePHP1.2RC2で使う

携帯キャリアの判定に, PearのNet_UserAgent_Mobileを使う方法。まず、下記からNet_UserAgent_MobileとPearをダウンロード http://pear.php.net/package/Net_UserAgent_Mobile/ http://pear.php.net/package/PEAR UserAgentMobileのファイルを展開すると、mo…

$form->inputを複数項目使いたいときは

cakePHPで作られている簡易ECシステムBakesale http://bakesalehq.com/ のソースコードを見てたら、Viewで下記の記載を発見。 echo $form->inputs(array('name', 'price', 'weight', 'quantity', 'legend' => __('Add product', true)));inputsを使えば複数…

 最近のこと

最近は大き目の案件の開発をcakePHPでしていて、なかなかブログまで手が回らない。cakeで開発して期間がどれぐらい短縮できるか実験中です。ちょっと思ったのは、ViewでFormとかのヘルパーをがんばって使うよりも、ヘルパーの動作が分からない時やハマッた時…

cakeのSQLでDISTINCTを扱う

DISTINCTは大文字じゃないと駄目!絶対! $this->Model->find($conditions, 'DISTINCT Hoge.numberid');Distinctって書いてて、 select `Distinct Hoge`.`numberid` from .....みたいなSQLになってエラーで結構な時間、悩んでしまった。

コピペ用の簡易View生成コマンド(KYview)

cakeを使うと、ロジックの部分はすごく簡単にかけるようになるんだけど、DBのカラム数が多いとViewにセットした変数を記述していくのも結構一苦労。 bakeとか使えよって感じだけど、簡易管理画面以外はbake使わないし、bakeの生成するviewは余分な情報が多す…