2008-09-01から1ヶ月間の記事一覧

なぜか$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は余分な情報が多す…

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

cake/libs直下にあるphpファイルは、cake本体で利用するためでもあるけど、普通にコントローラから呼び出して使えます。かなり便利なものがたくさんあり、例えば socket.php file.php folder.php http_socket.php xml.php などがありますこれらのAPIのメソッ…

ユーザアカウントのアクティベーション方法

英語だけど参考になる記事 http://www.jonnyreeves.co.uk/2008/06/cakephp-activating-user-account-via-email/ユーザアカウントを仮で作っておき、cakePHPのcore.phpのsaltと、createdレコードなどを組み合わせて、Security::hashを使ってユーザごとにアク…

 勉強会の資料が大量に置いてあるページ

ここ http://cakephp.blog16.jp/index.php/2008/06/05/p7素晴らしい。

Paginationについて書いてある記事をリストアップ

Paginationに関して調べてた時に、色々と見つけた記事を忘れないように書いておこう。 ■CakePHP Pagination まとめ http://www.syuhari.jp/blog/archives/122 ↑ソートの指定とか、昇順のしていなどをまとめている ■Paginatorの使い方。CakePHP1.2 http://www…

フォームから送信された値を、Paginationで引き継ぐ方法

環境はcakePHP1.2RC2です。検索画面などで、検索条件を入力して検索結果一覧を表示するようなものって結構ありますよね。そこで面倒なページング処理なんですが、CakePHP1.2から利用できるPaginationの機能を使えば簡単にページング実装できるよって話。ただ…

cakePHP用のIRCのチャンネル作りました

cakephpのフォーラムにも書いたけど、IRCのチャンネルを作りました。日本語でだらだらと気軽にcakeの話題を話せる場を知らないので、とりあえず作ってみました。 別にcakeの話題だけじゃなくて、いろいろしゃべってますが、ひやかしでも何でもいいので、暇な…

getで送信されたパラメータを引き継ぐpaginationのやり方

cakephp1.2RC2の環境を前提にしています。例えば下記のように、 http://hogehoge.com/hoge/index/id1234 GETでid1234というパラメータ値を渡してそれを検索条件にしているような場合、viewのファイルに下記の1文を記述すればpaginationのURLにもパラメータ…

cakePHPのコマンドラインプログラムでバッチ処理

cakePHP1.2rc2の環境をベースにしてます。DBを絡めたバッチ処理とか、cake使うと簡単にできます。cakeである程度WEB画面まで実装してれば、modelファイルとかもあるだろうから、コントローラーっぽいプログラムを実装するだけ。基本は、app/vendors/shells/…

独自のバリデーション関数を追加(日本語の文字数チェック)

cakePHP1.2rc2を使ってますが、標準のバリデーションでmaxlengthを使って文字数チェックをしようとすると、日本語に対応していないのでバイト数をカウントしてしまいます。(例えば、「あああ」だったら9文字とカウント(UTF8))そこで、日本語の文字数をカウ…

エラー画面でレイアウトファイルを指定する方法

cakePHP1.2rc2の環境です。cakePHP1.1の場合は下記の.ctpを.thtmlにすれば動くと思います。cakePHPは、存在しないURLのリクエストがくると、404エラー画面を出しますが、この画面の内容を変更する場合は、 app/views/error/error404.ctp というファイルを置…

cakePHPで複数パターンのバリデーションチェック

例えば選択されたラジオボタンによって必須項目が変わるような、あるモデルのファイル内で、複数パターンのバリデーションチェックをしたいと思い、昨日、新幹線の中で悶々としてました。 とりあえず下記のように対応してみた。 cakePHPのバージョンは、1.2R…

メール送信時に(Viewの)テンプレートファイルを使う方法

CakePHP 1.2.0.7125 RC1.を使ってるのですが、メール送信時にメール本文をテンプレート化してそれを読み込んで送信しようと思い、検索したところ、controllerのrenderの内容を出力するob_get_clean(); の存在を知り、いろいろやってたんですがどうもうまくい…

よくある申込み画面の機能を作る

よくある申し込み、お問い合わせ画面の機能をCakePHPで作ってみる。 申し込み画面→確認画面(バリデーションチェック)→完了画面 という流れ。 DBの作成 moushikomiテーブルを作成 CREATE TABLE `testcake`.`moushikomi` ( `id` INT NOT NULL AUTO_INCREMENT…

とりあえずデータの入出力をするアプリを作る

Bakeでテーブル単位のCRUD系ファイルを自動生成 とりあえずbakeする bakeスクリプトを使うと、DBに対して一覧表示、新規レコード追加、変更、削除などが出来るMVCファイルを作ってくれる。 bakeスクリプトファイルは /cake/console/cake です。 DBの定義 hog…

cakePHPの路線をあえてはずれる方法を身につけておく

今回は、CakePHP1.2を使います。 cakePHPの路線をあえてはずれる方法を身につけておく cakePHPは高速開発が出来る代わりに、ある程度制約を持たせています。例えばモデルやコントローラ、Viewの名前など。 最大の恩恵を受けるためにはこのような制約に沿った…

cakePHPはじめました

この夏、cakePHPが熱い!と勝手に思い込み、若干乗り遅れ気味なcakePHPの世界へGO! なぜcakePHPか? 別にPerlでも良かったんだけど、どんなレンタルサーバでも(DBが動いていれば)使えるし、ファイルの依存関係で色々なものをインストールするのに悩まされる…

cakephpの話題はこちらで

今まで書いてた下記のブログで、 http://d.hatena.ne.jp/ichikaway cakephpの話題が多くなりそうだったので、今後はcakeネタはこちらに書いていきます。とりあえず、今までのcakephpに関する記事をコピー