メイン CakePHP モデル(Model)
DBを使用しないモデルでバリデーションを使いたい | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| gunny | 投稿日時: 2010-2-8 11:06 |
Baker ユーザ ![]() ![]() 登録日: 2007-3-4 居住地: 投稿: 28 |
DBを使用しないモデルでバリデーションを使いたい DBを使用しないモデルでバリデーションがうまく使用できず困っています。
JSONのAPIを使用したアプリを作りことになり、モデル側で としています。 また、諸所の事情で、フォームの要素も、name="data[Model][field]"の形ではなく、name="field" のような形になっております。 これに対してコントローラ内で のようにして、input.ctp内で のようにしているのですが、エラーが表示されません。 本来はDatesourceなど使って正しく作るべきなのでしょうか、Detasourceの使い方がいまひとつ理解しきれず、一旦validationの昨日の見つかっておこうと思っているのですが、どなたか問題点、解決方法をご教示いただけませんでしょうか。 よろしくお願い致します。 |
| hiromi2424 | 投稿日時: 2010-2-8 12:31 |
Baker 常連 ![]() ![]() 登録日: 2009-11-23 居住地: 新潟 投稿: 58 |
Re: DBを使用しないモデルでバリデーションを使いたい その考え方で問題ないと思いますが、例文のtypoが多くてどこが間違っているのかはっきりしません。
なので動く例文を貼りますのでご自身のコードと比べていただけますか。 以下、「Event」といったモデルの、「nofield」というフィールドに対しての例です。 Controller(controllers/events_controller.php) Model(models/event.php) View(view/events/add.ctp) |
| gunny | 投稿日時: 2010-2-8 14:43 |
Baker ユーザ ![]() ![]() 登録日: 2007-3-4 居住地: 投稿: 28 |
Re: DBを使用しないモデルでバリデーションを使いたい ご指摘ありがとうございます。
コード拝見しているのですが、内容としては同じだと思っています。 しかし、実際にはviewのなかで$form->error('fieldName');を呼んでも、エラー内容が表示されません。 $controller->Model->validateinErrors の中には、json形式で意図するエラーが入っているのですが、$form->error('fieldName');の出力がありません。 [phpcode] if(!$this->Model->validates()) render('input'); [/phpchode] のように明示的にviewを指定しているのがいけないのでしょうか? |
| gunny | 投稿日時: 2010-2-9 11:10 |
Baker ユーザ ![]() ![]() 登録日: 2007-3-4 居住地: 投稿: 28 |
Re: DBを使用しないモデルでバリデーションを使いたい Datasourceを設定し、view側も$this->data[Model][field]のように直しました。
この状態でcontroller内で $this->Model->validates(); を実行すると、正しくバリデーションが行われ、エラーがある場合元のフォームに戻るのですが、エラーメッセージが、 になっています。 validateionErrorsをみると期待通りの値(エラーのある項目のみ、モデルで設定したメッセージが入っている)になっているのですが、フォーム側ではvalidateionを通っている要素に対しても、modelで設定しているエラーメッセージでなく が出ています。何か原因思い当たる方おられましたらご教示いただけると助かります。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



