【至急】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回まで
  • 登録:
  • 終了:2013/08/06 23:21:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:dawakaki No.2

回答回数797ベストアンサー獲得回数122

ポイント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

回答回数574ベストアンサー獲得回数104

ポイント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ベストアンサー獲得回数122ここでベストアンサー

ポイント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のデータが引き継がれていない可能性が高いと思います。
    もう少し調べてみようと思います!

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

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

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

回答リクエストを送信したユーザーはいません