タグ

cakephpに関するt_yodoのブックマーク (101)

  • 極める routes.php (CakePHP 1.2) : akiyan.com

    極める routes.php (CakePHP 1.2) 2009-05-24 5/22に開催された第4回CakePHP勉強会@Tokyoにて、routes.phpの書き方と逆ルーティングについて発表させて頂きました。勉強会での発表は2回目です。 以下発表資料です。 極める routes.php View more Microsoft Word documents from akiyan. 「CakePHPでmod_rewriteを使わずに大抵のURLを作れる自信がある人ー?」 という質問でほとんど挙手が無かったので、テンション高めで発表できました。あと、1回目の発表では緊張しすぎて声が出なかったので、今回ははっきり喋るように心がけてみました。(それでも焦った箇所では声が小さくなっていたかも...)お聞きくださった皆様、どうもありがとうございました! ちなみに極めるといいつつも、named

  • CakePHP2.0のAuthComponent

    1.X系の感じで使おうと思ったら、結構ハマったのでメモ。 Authコンポーネントは、2.0で大きく変わっていた。 1.ログイン処理部分を自作しなければならないこと CakePHP1.X系ではloginのメソッドを用意しておけば他の処理は不要だったのだが、CakePHP2.0からは自前で用意しなければならないらしい <1.0系の時> public function login() {} <2.0系の時> public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { return $this->redirect($this->Auth->redirect()); } else { $this->Session->setFlash(__('IDがパスワードが違います。'), 'def

    CakePHP2.0のAuthComponent
  • フォーム入力画面と確認画面で共通で使えるXFormヘルパーをCakePHP2.0対応しました - cakephperの日記(CakePHP, Laravel, PHP)

    Cake1用に作っていたXformヘルパーをCake2.0対応しました。(CakePHP2.1.1でも問題なく動きました) https://github.com/ichikaway/xformHelper/tree/2.0 ※現在、PHP5.2ではエラーがでますので、PHP5.3以上が動作条件になります(2012/4/18) Xformヘルパーは、まったく同じ記述で、フォーム入力画面ではinputタグを出力、確認画面ではPostデータを表示するヘルパーです。これにより、確認画面のViewファイルが入力画面と同じものが使えるようになり工数削減できます。 Cake2に対応した際にプラグイン化しています。 インストール方法 git cloneか、zipファイルをダウンロードし、 app/Plugin/Xformに設置。(Xform以下にはViewフォルダが入るはずです) app/Config/b

    フォーム入力画面と確認画面で共通で使えるXFormヘルパーをCakePHP2.0対応しました - cakephperの日記(CakePHP, Laravel, PHP)
  • 1-byte.jp - CakePHPを使ったテスト駆動開発

    ブログ初ポストはCakePHPを使ったテスト駆動開発です。 CakePHPはユニットテストとしてSimpleTestに対応しています。 SimpleTestをインストールするだけで、モデルやコントローラ、シェル、ルーティングクラスなどのユニットテストが出来るようになります。 今日はこのCakePHPSimpleTestを使ってテスト駆動開発の流れを説明します。 ただ、僕自身テスト駆動開発を学んだのは去年のCake祭りなので、至らない点が多々あります。 もし何かあれば、コメントでご指摘ください。 今更感もありますが、この場を借りてCake祭りでテスト駆動の指導をしてくださった、@sizuhikoさんに感謝します。 開発手順 まずは開発手順を示します。少し細かいですが、テスト駆動では以下のような順で開発していきます。 設計する。 テストケースを書く。 テストケースをデバッグする。 コー

  • テスト時に全テーブルのfixtureを自動で読み込む | へびにっき

    環境:CakePHP 1.3 テスト時に誰もが一度は経験するであろう Missing Database Table Error: Database table users for model User was not found. というエラーを回避する方法です。 …… CakePHPのテストでは必要なfixtureを全て手動で列挙する必要があります。一つ二つなら良いのですが、モデルにアソシエーションを設定すると関連するテーブル全てが再帰的に必要になるので、非常に面倒です。 それならいっそ全テーブルを自動で読み込んでくれよ、ということで自動で読み込む方法を考えました。以下のクラスに示す2メソッドを CakeTestCase のサブクラスで定義してください(CakeTestCaseを独自の拡張クラスに置き換えるも参照)。 例えばdefaultデータベースに users, posts, tag

  • CakePHP1.2 モデルのデータをオブジェクトで扱う | Sun Limited Mt.

    少し前ですが下記の投稿を読んでちょっと興味があり色々と試してみました。 “取得データを配列からオブジェクトに変換” フォーラム – CakePHP Users in Japan I want objects, not arrays! ? nuts and bolts of cakephp モデルに下記のようなコードを書けばデータを取得するとオブジェクトとして扱えるということです。 function afterFind($results, $primary = false) { if($primary == true && !is_object($results)) { return Set::map($results); } } ただこれだとCakePHP1.2 で大変使いやすくなった paginate とかが使えなくなる。 そこで、モデルにオブジェクトに変換するメソッドを書いて必要なとき

    t_yodo
    t_yodo 2012/07/27
    ]モデルのデータをオブジェクトに変換する
  • はてなブログ | 無料ブログを作成しよう

    ビールとポップコーンと映画 ラストマイルを見た。良い映画だった。 映画館でべそべそ泣いて、鼻を啜りながら車で帰った。感想はこのブログでは書かない。みんな映画館に行って感じてみてほしい。 帰ってからツイッターで感想を漁り、うんうん、わかるわかる、そうだよね、とまた映画を思い出して…

    はてなブログ | 無料ブログを作成しよう
  • バリデーションのベストプラクティス - 24時間CakePHP

    イントロダクション CakePHPの使い方は多種多様で、もちろん一つのやり方が正解ということはありません。 しかし、CakePHPはフレームワークであるわけで、想定された使い方以外ではその真価をなかなか発揮できません。 CakePHPにおけるモデルは、ビジネスロジックを置くレイヤとして想定されています。 そして、バリデーションを用いることによって保存のロジックを構築するということも想定されています。 これは、何故Cookbookで紹介されるコードが、ほとんどバリデーションとModel::save()の組み合わせであるかということかの答えにもなっています。 悪い例 あなたはModel::save()の代わりとして、以下のようなadd()メソッドをモデルに定義しているかもしれません: <?php class Post extends AppModel { var $validate = arr

    バリデーションのベストプラクティス - 24時間CakePHP
  • CakePHPでエンティティを使えるプラグイン - CakeEntity - basuke の日記

    CakePHPのモデルはデータにアクセスするためのオブジェクトです。モデルが来記述しているデータは単に配列として表現されています。他言語のメジャーなフレームワーク、RailsやDjangoと比較してCakePHPが大きく違っている部分であり、CakePHPがディスられる大きな要因の一つとなってるように思います。 O/Rマッパーによってデータソースのレコードと結びつけられたオブジェクトは、一般的にエンティティと呼ばれます。用語的には永続化されたオブジェクトぐらいに考えて良いかと。エンティティはオブジェクトなので、当然オブジェクト指向的にも相性がよく、好んで使われる手法です。 CakePHPのモデルを使った場合と、エンティティを使った場合のコーディングとを比較すると以下のように違いが出ます。 CakePHPでの保存のコード <?php $Post = ClassRegistry::init(

    CakePHPでエンティティを使えるプラグイン - CakeEntity - basuke の日記
  • cakePHPでCSV出力するぜ! : straighten

    Posted on | 9 月 12, 2008 | 「ぜ!」って程の事ではないのですが、最近よく仕事でやっているので覚え書きの為にメモしておきます。 利用している環境はcakePHP1.2でPHP5です。今回は仮に、sitesテーブルに登録されているデータを一括でCSVにしてダウンロードする想定でサンプルしてみます。 1, Csv用ヘルパーの導入 /views/helpersにcsv.phpと言うファイルを作成し、こちらのコードをコピペしますw 2, コントローラーの作成 こんな感じに作成します。

    t_yodo
    t_yodo 2011/04/23
    csvヘルパを使ったCSV出力の方法。チョー簡単。utf-8からsjisの変換もついている。
  • Using Sqlite3 with CakePHP

    I'm trying to run Sqlite3 with CakePHP. Yes, i know it's not officially supported, but this post here: How do I connect CakePHP to a SQLite database? says it's possible. I've downloaded the new driver file "dbo_sqlite3.7.php" and put it in "cake/libs/model/datasources/dbo". Now I'm having trouble getting connected to the db. Things I'm confused on: Where should my database.sqlite file be kept What

    Using Sqlite3 with CakePHP
    t_yodo
    t_yodo 2011/04/21
    ][sqlite]cakephpでsqlite3を使う場合、dbo_sqlite3.php が必要。さらにdatabase.phpの設定は、'driver' => 'sqlite3' にする。
  • 誰でもできるサービスレイヤの実装 - 24時間CakePHP

    イントロダクション CakePHPでは標準でサービスレイヤを提供していません。 しかし、CakePHPはフレームワークとしてその基礎部分は十分に提供してると言えます。これはアプリケーション側で実装すべきでしょう。 規模が一定を超えるアプリケーションではサービスレイヤの効能は特筆すべきものがあります。 それは「何をしているか」を端的に表すことができ、開発初期段階において「何が必要か」を明確にし、更にテストを容易にします。 また、トランザクションのサポートもサービス単位で実装することによって、明確に「1サービス1トランザクション」が表現できます。 サービスをモデルとして実装する 上記のサービスモデルは非常に単純化されたサービスモデルの一例です。 これは各モデルのマジックメソッドによる呼び出しを提供します。 saveNewArticleはその例で、使うモデルを一々定義する必要はありません。 コン

    誰でもできるサービスレイヤの実装 - 24時間CakePHP
  • モデルの配列を管理するCollectionableプラグイン - Optionsビヘイビア - 24時間CakePHP

    Collectionableプラグインとは モデルのメソッドの引数やプロパティには、大きな配列が用いられるものがあります。 この管理を適当にすると、コピペの嵐になりがちです。 しかし毎度毎度、その管理の為のコードを書くのは億劫ですし、ロジックのミスにより予期しないバグの混入に陥ることがあります。 Collectionableプラグインは、そのような汎用的な配列の管理を提供するためのもので、配列の共通部分を減らし、かつ柔軟な切り替えを行うことを可能にします。 このプラグインはGitHubで公開しています。以下からダウンロードするかcloneするかsubmoduleとしてご利用ください。 また、英語ですがreadmeにはサンプルコードを載せてあります。 hiromi2424/Collectionable - GitHub このプラグインには現在4つのビヘイビアが存在します。今回は、そのうち最も

    モデルの配列を管理するCollectionableプラグイン - Optionsビヘイビア - 24時間CakePHP
  • CakePHPでフィクスチャに惑わされずにテストを書く方法

    前回挙げたチュートリアルはやってみましたか? 快適なテストライフを送ってますか? テストケースをたくさん書いていると気づくのは、フィクスチャがメンテナンスの邪魔をするということ。 フィクスチャに初期データを定義すると、それを気にしながらテストケースを作ることになります。 これがとても面倒くさいんです。 これを解消すべく、今日はモックを使ったテストケースの書き方を紹介します。 モックとは SimpleTestのモックで参考になるのは、以下の書籍です。 Webアプリケーションテスト手法 著者: 水野 貴明 (著), 石井 勇一 (著), 新藤 愛大 (著), 岸田 健一郎 (著), 荻野 淳也 (著), 安井 力 (著), 田中 慎司 (著) 出版社: 毎日コミュニケーションズ 発売日: 2008/7/25 この書籍のp154にモックについて以下のように書いてあります。 モックを使うと

  • 超便利なDebugkitを画面キャプチャ付きで解説 - cakephperの日記(CakePHP, Laravel, PHP)

    CakePHPの便利すぎるプラグインであるDebugkitが色々と機能追加されてたので、今の最新版でどうなっているか画面キャプチャをベースに解説します。thechaw.comにある最新ソースだとid:yandodさんがリクエストしてた「Viewにセットした変数とかヘルパーとか全て表示できるように」というのが、Variablesパネルに加わりました(2009/5/29のコミットで)。 基的には、下記からZIPダウンロードしてください http://github.com/cakephp/debug_kit/downloads (現在の最新版はVersion 1.1) http://thechaw.com/debug_kit/versions 追記 上記のzipはリリース版です。最新の機能を使いたい場合は下記からファイル名の日付が最も新しいZipダウンロードしてください。 http://git

    超便利なDebugkitを画面キャプチャ付きで解説 - cakephperの日記(CakePHP, Laravel, PHP)
  • [CakePHP] 画像のアップロード&リサイズを簡単にできる ImageBehavior | Sun Limited Mt.

    画像のアップロード&リサイズ処理などは割とよくある処理でかつ面倒なものです。その処理を簡単にやってくれる Imageビヘイビアの紹介です。CakeFest で紹介された Media Plugin が高性能なので、メディアプラグインを使うのがいいのかもしれませんが、以前から Image ビヘイビアに関していつか使い方をまとめようと思っていたので紹介します。 参考サイト:ActAs Image column behavior (Articles) | The Bakery, Everything CakePHP Baker で紹介されていた Image ビヘイビアです。このビヘイビアはアップロードされた画像をサムネイル作成、リサイズ、複数のバリエーションのサイズの画像を作成してくれます。またモデルを find すると画像のパスを返してくれます。 作成される画像は、webroot/img/[Mo

  • 『cakePHP: save関連のメソッドの挙動』

    順調に趣味のサイトをcakePHPにて開発しいたが、どうしてもsave関連のメソッドの挙動が気にくわない save($data) $data中にprimary_keyが存在すればupdate, 無ければinsert で、insertの方には問題がないが、updateの場合は$data[id]がテーブル上に存在し無ければ、insertしてくれるというお節介を起こす。 update前に、SELECT COUNT(*) FROM MODEL WHERE ID=IDって問い合わせしている。 そもそもUPDATE後に、affected_rowsで調べるのでは、ダメなんだろうか? 例えば、find, read等で行を取得。 テーブルをLOCKした上で、取得したなら問題ないが、save等で保存するまでの間に、該当行が削除されてしまった場合、予想外にinsertされてしまう。 これは、saveFieldで

    t_yodo
    t_yodo 2010/09/09
    save()でtrueが返ってくるけど更新失敗、というケースもあるらしい。これは大きな発見。ユニーク違反等のときにハマるかもしれない。
  • Searchプラグインによる検索条件をページングで引き継ぐ(Prgコンポーネントを置き換える) | へびにっき

    環境: CakePHP 1.3 CakeDCのSearchプラグインは、全体としては非常に優れたプラグインなのですが、Prgコンポーネントの機能がどうしても私の使い方には合いませんでした。具体的に言うと 検索パラメータの引き継ぎにnamedを使うのは問題が多い(参考)。代わりにQueryStringを使いたい。 Searchableビヘイビアと同じような内容の $filterArgs を書くのが手間。 そもそも値の検証や制限はモデルでやるべき、と考える。コンポーネント内でバリデーションを実行したりDBアクセスまでするのは仕事のし過ぎ。 これらの点を解消するため、昔作ったSearchPaginationプラグインを全面改訂して、Searchプラグインと連携できるようにしました。Prgコンポーネントの代わりに使うことができます。 http://github.com/tkyk/cakephp-s

  • CakePHPでトランザクション制御 | へびにっき

    環境: CakePHP 1.3 CakePHPのModelクラスには直接トランザクションを制御するメソッドがない。そこで例えば次のようにAppModelにメソッドを定義する。 class AppModel extends Model { function begin() { return $this->getDataSource()->begin($this); } function commit() { return $this->getDataSource()->commit($this); } function rollback() { return $this->getDataSource()->rollback($this); } } しかしこの方法ではテストがやりにくい。明示的にトランザクションを制御したい時というのは、複数のテーブルにまたがる複雑なロジックを組むことが多いので

  • ページの遷移を管理するTransitionコンポーネント - 24時間CakePHP

    Transitionコンポーネント1.0をリリースしました。 http://d.hatena.ne.jp/hiromi2424/20100617/1276757385 ソースはこちら http://github.com/hiromi2424/TransitionComponent 画面右上あたり「Download Sources」をクリックすると、アーカイブがダウンロードできます。 pull request お待ちしています:) イントロダクション 複数ページの入力画面、皆さんどういう処理をしていますか? 同じアクション内で遷移する場合、データが存在しるかチェックしてどこの位置にいるか判断して・・・と、色々と面倒ですよね。 他のアクションに分割しても似たような処理が続くことになります。 そこでTransitionコンポーネントの出番です。 このコンポーネントを使うと、大抵のページ遷移は1行

    ページの遷移を管理するTransitionコンポーネント - 24時間CakePHP
    t_yodo
    t_yodo 2010/09/02
    良く読んでないけど、なんだか便利そう。