※ ChatGPTを利用し、要約された質問です(原文:フォームの要素がつかむ値の変更方法について教えて下さい。)
フォームの要素の値変更方法について
このQ&Aのポイント
フォームの要素の値を変更する方法について教えてください。
php5とQuickFormを使用してフォーム画面を作成しています。入力要素には「配信元」、「配信先」、「件名」、「本文」があります。設定値を凍結して表示し、返信ボタンを押すと値が入れ替わるようにしたいです。
現在、「返信」ボタンが押された際に配信元と配信先の値を入れ替えることができません。どのようにすれば実現できるでしょうか?
フォームの要素がつかむ値の変更方法について教えて下さい。
フォームの要素がつかむ値の変更方法について教えて下さい。
php5とQuickFormの組み合わせでフォーム画面を作成しています。
それは、メールに似た機能を持つ画面ですが、画面の入力要素は「配信元」、「配信先」、「件名」、「本文」
です。
これらの要素に対して次のような形でデフォルト値を設定して、フォームの要素を$form->freeze();で凍結して表示すると
各要素は設定値が凍結された状態で表示されます。
$form->setDefaults(
array(
'user_id_from' => 'tanaka',
'user_id_to' => 'suzuki',
'mail_ken' => 'こんにちは',
'mail_main' => 'また遊びましょう',
)
);
(画面表示)
配信元:tanaka
配信先:suzuki
件名:こんにちは
本文:また遊びましょう
このように凍結された要素が表示された画面で「返信」ボタンを押した場合の動きが意図したものになりません。
目的(意図したもの)は、この凍結された要素が表示された画面で「返信」ボタンを押すと。user_id_fromとuser_id_toの値が入れかわり、user_id_from要素以外は凍結が解除されて次のような表示にしたいのです。
(画面表示)
配信元:suzuki
配信先:tanaka
件名:こんにちは
本文:また遊びましょう
※動作のイメージとしては、メールの受信メールを開いた状態の画面(編集不可)で返信ボタンを押すと、メールの作成画面に切り替わり、受信メールの配信元と配信先の値が入れかわったものが作成画面に配信元と配信先に入ります。
そして、作成画面の配信元以外は編集が可能にしたいです。
そこで、凍結された画面で「返信」ボタンが押された場合、処理の中で次の通りに$form->setDefaultsの設定を行いましたが、画面の表示結果としては最初に設定した値から変わっていません。
$form->setDefaults(
array(
'user_id_from' => 'suzuki',
'user_id_to' => 'tanaka',
'mail_ken' => 'こんにちは',
'mail_main' => 'また遊びましょう',
)
);
現状では、「返信」ボタンが押された処理で配信元と配信先の値を入れ替える事だけができません。
何がいけないのでしょうか?
全く分かりません。ヒントだけでもよいのでアドバイスを下さい。
宜しくお願いします。
お礼
ありがとうございました。おかげさまでできました。 setConstantsは調べている時に存在を知りましたが、定数の設定で絶対に値の変更できない意味だったので、要素に値を設定する場合、これは使えないと勝手に判断したのが間違いでした。 本当にありがとうございました。