フィールドを再設定するには、set_value 関数を使用できます。
set_value()
入力フォームまたはテキストエリアの値を設定できます。関数の最初のパラメーターを介してフィールド名を指定する必要があります。2 番目 (オプション) のパラメーターを使用すると、フォームの既定値を設定できます。
最初に、フォームの検証とアップロードが成功したかどうかを確認します。
両方が成功した場合、ユーザーを新しいページにリダイレクトします。
これらのいずれかが失敗した場合、ビューでアクセスしてフォームを表示できるデータ配列にエラー メッセージを追加します。
コントローラ
public function signup()
{
// Data array
$data = array();
// Load form validation libary
$this->load->library('form_validation');
// Load upload library and set configuration
$config['upload_path'] = './uploads/';
$this->load->library('upload', $config);
// Set the required fields
$this->form_validation->set_rules('first_name', 'First name', 'required');
if ($this->form_validation->run() == TRUE)
{
// If upload was succesfull
if ($this->upload->do_upload())
{
$upload_data = $this->upload->data();
// Build array to store in database
$save_data = array(
'first_name' => $this->input->post('first_name'),
'image' => $upload_data['file_name']
);
// Send data to your model to process
$this->your_model->save($save_data);
// Redirect to success page
redirect('registration_succes');
}
else
{
// Upload failed, set error
$data['error'] = $this->upload->display_errors();
}
}
else
{
// Form validation failed, set error
$data['error'] = validation_errors();
}
// Display the form by default or on error
$this->load->view('myform', $data);
}
ビューでは、set_value 関数を使用して、送信された値をフィールドに再入力します。
表示 (マイフォーム)
<?php echo form_open_multipart('signup');?>
<fieldset>
<?php if( isset($error) && ! empty($error) ): ?>
<div class="error"><?php echo $error; ?></div>
<?php endif; ?>
<p>
<label>First name</label>
<input type="text" name="first_name" value="<?php echo set_value('first_name'); ?>" />
</p>
<p>
<label>File</label>
<input type="file" name="userfile" size="20" />
</p>
<p>
<input type="submit" />
</p>
</fieldset>
</form>