1

codeigniterでフォーム検証クラスを使用しています。すべて正常に動作していますが、エラーのあるフォームを再読み込みすると、ページが再び上部に表示されます。(更新されたため)。#idURLの最後にを追加して、フォームがあるページのさらに下に読み込まれるようにする方法はありますか?

私はどれがうまくいったか試しredirect('form/form#form, 'refresh')ましたが、エラーを実行しませんでした。

4

2 に答える 2

0

簡単なフォーム検証を行っているだけですか?その場合は、set_value を使用して、エラー後にフォームを再入力できるはずです。

http://codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform

CI のフォーム検証を使用している場合は、フォームがコントローラーに戻ると想定しています。次に、コントローラーはどこに行くかを決定する必要があります。

  if ($this->form_validation->run() == FALSE) {
      $this->load->view('form#anchor');
  } else {
      $this->load->view('formsuccess');
  }

検証中に発生したエラーに基づいて、コントローラーに #anchor タグを動的に設定できるはずです。

于 2012-09-28T00:24:22.070 に答える
0

問題は、ページをリダイレクトすると、POST 配列がクリアされることです。したがって、 set_value() はフォームを再作成できません。

これにはいくつかの方法があります

  1. セッション ライブラリを上書きします。このライブラリ内で、post 配列をリダイレクト時にセッション flash_data に貼り付けます。次に、set_value 関数 (2 つある) 内で、post 配列に何も見つからない場合は、flashdata を探します。
  2. set_value 関数を使用しないでください。代わりに、アクション コントローラー内でフォーム データを flashdata に置き、フォーム内で set_value('form_field_1'); の代わりに $this->session->flashdata('form_field_1') を使用します。

リダイレクトに関する限り、あなたはそれを正しくやっています。

怠惰でコードを投稿していないことをお詫びします。これが十分に明確でない場合はお知らせください。コードを投稿できます。

于 2012-09-27T23:23:56.253 に答える