Entries


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

-件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

-件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1364-759d1d3f

CakePHPの練習:validates()をしようとしたらうまく動かなくて復習


CakePHPのvalidateをやってみたかったのですがちゃんと動きませんでしたのでメモってみます.ver1.3です.
       ____
      /      \
     / ⌒  ⌒   \
   /  (ー) (ー) /^ヽ 入力チェックくらいはやっておくか
  |   (__人__)( /   〉|
  \   ` ⌒´  〈 / ⌒^ヽ
―――――――― \ _ _ _ )


validateについて参考にしたのはこちらです.
http://wiki.livedoor.jp/tech5963/d/Validation(%A5%D0%A5%EA%A5%C7%A1%DD%A5%B7%A5%E7%A5%F3)
http://wiki.livedoor.jp/tech5963/d/Validation(%A5%D0%A5%EA%A5%C7%A1%DD%A5%B7%A5%E7%A5%F3)

最初につくったもの


参考サイトをまねしてすすめてみました.

コントローラがusers_controller.php,モデルがuser.php,ビューはadd.ctpという構成です.アクションは,addアクションからデータを追加したときにvalidateが動くようにしたいと考えました.

モデル

モデルはこんな感じです.user.php


コントローラ

コントローラです.users_controller.php


ビュー

ビューもシンプルです.add.ctp

そしてやはり動かない

これで動くはずと思ったら動きませんでした.

           ____
         /   ∪  \
       γ⌒) ノ三三三ゞ(⌒ヽ
      / _ノ (>)三(<) \ `、 なにがだめなんだおー
     (  <:::∪:::::(__人__):::::∪|  )
      \ ヽ ::∪::::` ⌒´∪:://


モデルにデータをセットしていなかった


困ったので,バリデーションできている昔の自分のソースを見てみました.
すると$this->モデル名->validates();するまえに$this->モデル名->set($変数);という処理をしていました.

その通りにsetを加えてみました.

すると
cakephpでvalidates()
あっさりvalidates()が動きました.

うーん.これはどういうことなんだろう.

$this->dataの中身を見てみるとこんな感じです.

なるほど.
$this->モデル名->set($変数);するとどうなるかということで,Userオブジェクトの中身を見てみました.
set()してないと.こんなかんじで空になってました.


set()してるとどうなるかというと.

上記は他の部分は省略しています.要するに$this->モデル名->set()すると,モデルオブジェクトの[data]というキーにモデル名とカラム名の中身が入っています.これがあるとvalidates()が動くみたいです.

たぶんそういうことなんじゃないかな.たぶん.

追記


後からわかったことを追記しておきます.
cakephpは$this->モデル名->save();をするときに自動的にバリデーションが走るみたいです.
$this->モデル名->validates()の方は手動でバリデーションを書けたいときに使うとか.
save()でバリデーションを自動的に実行したくない場合は,save()の第二引数にarray('validate' => false)を渡してあげればいいみたいです.

でわでわ


PHPで作る携帯サイトデベロッパーズガイドPHPで作る携帯サイトデベロッパーズガイド
(2009/12)
滝下 真玄

商品詳細を見る

0件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1364-759d1d3f

Appendix

プロフィール

川崎修

  • Author:川崎修
  • インターネット大好き!
    調布周辺で自宅警備してます



    メール:pugiemonn@gmail.com
    skype:pugiemonn
    twilog:Twilog
    mixi:mixi
    facebook:facebook
My Profile by iddy
FC2ブログ

カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

最近の記事

Twitter

コミュニティ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Adsense

月別アーカイブ

はてぶ数

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。