タグ

ブックマーク / tagamidaiki.com (4)

  • CakePHP2でhasManyのデータをFormHelperでViewに表示させる | tagamidaiki.com

    こんにちは! ModelのhasManyを使って、データをfindしてきたとき、FormHelperでViewにどう表示させるもんか悩んだのでメモ変わりに書いておきます。 多分なんのこっちゃ言ってるかわからないと思うのですが、以下のようなデータがあった場合にFormHelperのデフォルト値に反映させて、まぁいわば編集のような機能をつけたいときに悩んだのです(ようわからん) array( 'Article' => array( 'id' => '1', .... ), 'Item' => array( (int)0 => array( 'id' => 1, 'order' => 1, .... ), (int)1 => array( .... ) ) ) こんなデータがあったとします。このデータをControllerからViewに渡していると仮定しときます($this->dataにぶちこむ

  • CakePHP2を使用して複数フィールドにわたるバリデーションを行う | tagamidaiki.com

    単一のフィールドでバリデーションを行うには、モデルでバリデーションを定義してやればいいのですが、複数のフィールドにかかるバリデーションはどうすればいいのかわかりませんでした。 今回取り扱う、複数のフィールドにまたがるバリデーションというのは以下のような電話番号のフィールドや名前のフィールドなどです。 結論からいうと、 自分で関数を定義する ことによって解決しました。 例えば、空のフィールドを許さないバリデーションを行う場合は以下のようにモデルに書くと思います。 モデル <?php class Posts extends AppModel { public $validate = array( 'test_field' => array( 'rule' => array('notEmpty'), 'message' => '文字を入力してください。' ) ); } ここでruleに指定してあ

  • CakePHP2でユニットテスト 〜バリデーション編〜 | tagamidaiki.com

    まだまだあけましておめでとうございます。 年始をいかがお過ごしでしょうか。 私はいつものように、日常と変わらない生活をしています。 さてさて、ユニットテストの件ですが、以前更新して随分時間が経ってしまいましたが、書いていこうかなぁと思います。 今回はバリデーションをテストするための方法を書こうと思います。 前回の routes.php に対するテストの記事は以下になります。 CakePHP2でユニットテスト 〜route.php編〜 バリデーションを適応していく 今回はUserモデルに対してnameにnotEmptyを、telに対して独自のバリデーションであるcheckNotEmptyとnumericOnlyを適応していると仮定します。 User.php App::uses('AppModel', 'Model'); class User extends AppModel { public

  • CakePHP2で明示的にバリデーションを行う方法 | tagamidaiki.com

    CakePHP2を使おうと思ったときにおそらく1番最初にやることといえば公式ドキュメントを読んでブログチュートリアルを行うことだと思います。 ただこのブログチュートリアルは、CakePHPってこんなにすごいんだぜ! っていうのを強調したいためか、ある程度自動的にモデルと接続したりバリデーションが出来たりしています。 今回僕が少しつまった部分はバリデーションの部分です。 チュートリアルでは $validate に条件を書けば勝手にバリデーションしてくれますが、実際に運用する場合は自動的にバリデーションを行うというよりはむしろ明示的にバリデーションを行ないたいと思うことも多いと思います。 結論をいうと Modelの関数であるvalidates()関数を使用する ことで解決出来ます。 以下に例を示しましょう。 PostsControllerに以下のようなコードが書いてあるとします。 <?php

    kathew
    kathew 2013/06/21
    validates()を実行する前に $this->モデル名->set($this->request->data);も忘れずに
  • 1