【至急】cakePHP+jQuery MobileのPOST遷移について基本的な質問があります。

やりたいことは、jQueryのlistviewを使って複数の情報を入力したのち、結果をDBに保存しようというものです。以下のようなコードを作りましたが、POST遷移後の[A]でエラーとなり、DBへの保存はできなかったため、困っております。
コード上おかしい点がないか、お気づきの点がございましたら、ご指摘・ご教授をお願いいたします。
■TestsController.php
public function view() {
if ($this->request->is('post')) {
if ($this->Layout->save($this->request->data)) { … [A]
<略>
}
$this->redirect(array('action' => 'index'));
}
■View/Tests/index.ctp
echo $this->form->create('Test', array('controller' => 'Tests', 'action' => 'view'));
<ul data-role="listview">
<略>
</ul>
<button type="submit" name="submit" value="submit-value" class="ui-btn-hidden">Submit</button> … [B]
<?php echo $this->Form->end() ?>
■環境
さくらインターネット・スタンダードプラン
PHP 5.2.17
cakePHP 2.3.5
jQuery 1.7.2
jQuery Mobile 1.3.2
よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/08/05 22:33:46
  • 終了:2013/08/06 23:21:13

ベストアンサー

id:dawakaki No.2

だわかき回答回数797ベストアンサー獲得回数1222013/08/06 16:29:35

ポイント150pt

$this->request->data にあたるオブジェクトがありません。

data-role="listview" の役割を誤解しているような気がします。
http://billboardtop100.net/2011/02/jquery-mobile-lists.html

実際に取得したいオブジェクトのIDが hoge なら
$this->request->hoge
で取得します。

id:cochoo

ご回答ありがとうございます。
> data-role="listview" の役割を誤解しているような気がします。
> $this->request->hoge
昔そのような指定をしたような気がしましたが、
これでコントローラにViewのデータを渡すことができました。ありがとうございました。

【余談】
この後、ridirectできないという問題が発生しました。
おそらく、後発の問題とごっちゃとなっていて解決できずに悩んでしまったようです。
ただし、質問の内容はクリアできましたので、後発問題は別に調査・質問しようと思います。
ありがとうございました!!

2013/08/06 23:19:54

その他の回答(1件)

id:holoholobird No.1

holoholobird回答回数574ベストアンサー獲得回数1042013/08/06 01:15:24

ポイント50pt

[A]の部分、なぜlayoutになっているのでしょうか。

情報をセーブするときには
$this->Recipe->save($this->request->data)
だと思うのですが。

id:cochoo

ご回答ありがとうございます。
誤記ですね。
$this->Recipe->save($this->request->data)と変えても事象に変化はありませんでした。
もうしわけありません。

2013/08/06 23:12:08
id:dawakaki No.2

だわかき回答回数797ベストアンサー獲得回数1222013/08/06 16:29:35ここでベストアンサー

ポイント150pt

$this->request->data にあたるオブジェクトがありません。

data-role="listview" の役割を誤解しているような気がします。
http://billboardtop100.net/2011/02/jquery-mobile-lists.html

実際に取得したいオブジェクトのIDが hoge なら
$this->request->hoge
で取得します。

id:cochoo

ご回答ありがとうございます。
> data-role="listview" の役割を誤解しているような気がします。
> $this->request->hoge
昔そのような指定をしたような気がしましたが、
これでコントローラにViewのデータを渡すことができました。ありがとうございました。

【余談】
この後、ridirectできないという問題が発生しました。
おそらく、後発の問題とごっちゃとなっていて解決できずに悩んでしまったようです。
ただし、質問の内容はクリアできましたので、後発問題は別に調査・質問しようと思います。
ありがとうございました!!

2013/08/06 23:19:54
  • id:chata420
    エラーメッセージとかありませんか?Modelの宣言でLayoutを呼び出してみてはいかがでしょうか?
  • id:cochoo
    コメントありがとうございます。
    SQLのログを見る限り、UPDATEされた形跡はありませんでした。
    Modelでバリデーションに引っかかっている可能性もあって、
    if ($this->Layout->save($this->request->data, false)) {
    としたのですが、結果は同じでした。
    その前提で、ModelでLayoutを確認したのですが、何も入っていなかったので、
    POSTのデータが引き継がれていない可能性が高いと思います。
    もう少し調べてみようと思います!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません