0

クラス インスタンスを再構築せずに jQuery .load 関数を使用して Codeigniter URI を呼び出そうとしています。

元の URI セグメントは次のようになります/culture/edit/190

この最初の呼び出しは、ID の情報がプリロードされた入力を使用してフォームを作成します。保護されたクラス変数 (によって呼び出される$this->editIds) に含まれるさまざまなテーブルの最初の行 ID を保存して、後で送信されたフォームを元の ID と比較して、それらが変更されたかどうかを確認できるようにします。

フォームを送信すると、次のような URI が呼び出されます:/culture/do_editは、変更された可能性のあるフォームから投稿データを受け取り、insert ステートメントを準備します。

ID をチェックして、(ID が変更されている場合) ユーザーが ID を複製しようとしていないことを確認する必要があります。ID が一意の値に変更された場合 (変更された場合)、レコードの ID は問題なく変更されます。まったく変わっていない場合は、簡単に続行できます。

問題 (私が思うに) は、クラスが再構築され、以前に設定された変数の元のデータが失われることです。これdo_editは、変数が空 (コンストラクターの初期状態) と見なされるためです。

ajax メソッドの呼び出し方法を変更してみました。

$('#message').load('/culture/do_edit', data);

URI:/culture/do_editになり、クラスを再構築します。

また

$('#message').load('do_edit', data);

その結果、URIが生成され/culture/edit/do_edit、実際にメソッド edit パラメータが渡されますdo_edit

元の ID を比較できるように、クラス インスタンスを保持したいと考えています。

投稿の非表示の入力に元の ID を渡すこともできますが、それを避けることができれば、余分な入力を追加したくありません。URI全体をクロールして再構築せずにメソッドを呼び出す方法はありますか?

それとも、別の方法で比較する必要がありますか?

4

1 に答える 1

0

シリアル化されたオブジェクトをセッションに保存し、再び必要になったときにシリアル化を解除してみてください。

http://php.net/manual/en/function.serialize.php

PHP は、各 http リクエストの後、インスタンスを利用できるように維持しません。

隠しフィールドを使用して、物事を簡単にすることをお勧めします。これらのシリアル化されたオブジェクトをセッションに保存すると、アプリのトラブルシューティングが困難になる場合があります。

于 2013-07-27T04:04:29.903 に答える