ユーザーがフォームに値を入力して直接送信するか、フィールド値をテンプレートに保存して後で送信できる小さなサイトがあります。後でフォームを送信するために、彼は以前に保存したテンプレートをロードできます。そのために、テンプレートのロード/テンプレートの保存/フォームの送信の3つのボタンがあります。
Codeigniterのフォーム検証組み込み機能を使用しているため、以前に保存されたテンプレートをフォームに入力したいときに問題が発生します。
フォームフィールドはすべて次のように設定されます
$name = array(
'name' => 'name',
'id' => 'name',
'value' => set_value('name', $form_field_values['name'])
);
変数$form_field_values
は、テンプレートがロードされた場合のロードされたテンプレートの値、またはフォームが最初にロードされたときのデフォルト値のいずれかからの値を保持します。
最初に、フォームはデフォルト値でロードされます。[テンプレートのロード]をクリックするとset_value()
、以前はデフォルト値があったため、テンプレートの値は選択されません。私が欲しいのは、フォームフィールドの値をテンプレートの値に置き換えることです。
クリーンなアプローチでそれを行う方法を知っていますか?私がやったことは、呼び出しをスキップしてset_value()
完全に好きになる変数を導入することです:
$name= array(
'name' => 'name',
'id' => 'name',
'value' => $skip_form_validation ? $form_field_values['name'] : set_value('name', $form_field_values['name'])
);
$skip_form_validation
押されたボタンに基づいて、コントローラーに設定された変数はどこにありますか。テンプレートを保存/ロードするために、フォームの検証はスキップされます。