1

この質問は少し不自然ですが、CakePHP のドキュメントや Google で満足のいく解決策を見つけることができませんでした。

データベース内の情報を更新し、その情報をページに表示する単純な AJAX フォームを作成しようとしています。update div を事前設定する方法がわからないことを除いて、プロセス全体は簡単に見えます。

私のビューコードでは、

<div id="interestingContent"></div>
<?
  echo $this->Form->create();
  // create form fields here
  echo $this->Js->submit('Save', array('update'=>'#interestingContent');
  echo $this->Form-end();
  echo $this->Js->writeBuffer();
?>

これはうまく機能し、フォームが送信されると、コントローラーが正しく呼び出します

$this->render('ajaxview','ajax')

#interestingContentdiv を適切に更新します。

#interestingContentでは、質問:データベースから事前入力する最良の方法は何ですか? もちろん、ajaxview.ctp内部からコードを繰り返すこともできます#interestingContentが、それには DRY の方法が必要なようです。

私が最初に考えたのはajaxview.ctp、基本的にあるビューを別のビューに埋め込もうとしているので、要素を作成することでした。ただし、コントローラーが要素のビューを直接レンダリングするため、これはハックのように思えます。2.1/2.2 の新しいビュー ブロックも検討しましたが、それも正しくないようです。

この種のことは常に出てくると確信しています。これを行う一般的に受け入れられている方法はありますか?

4

1 に答える 1

1

私も同じ問題を抱えていました。ハックかもしれませんが、要素を使用するとうまくいきます。まず、bd コンテンツを表す要素を作成します。フォーム ビューでは、要素を使用します。そして、要素のみを含む別のビューを作成します。このビューは、ajax リクエストへの応答になります。要素を使用することで、コードの重複を防ぎます。

于 2012-08-20T19:14:55.793 に答える