Only “Type=Text” & “Textarea” Re-Populates After R

2019-09-19 10:48发布

问题:

Hi I am new with CI and trying to work on this form where if validation outputs error then user shouldn't loose the field values. But it only re-populates text & textarea, not checkboxes and select.

Form-

<span class="error"><?php echo $validation_errors; ?></span>
<?php echo form_open_multipart('user/post_property'); ?>
<input name="v_item_title" placeholder="Property Title Goes Here.." value="<?php echo $v_item_title; ?>" />
<textarea name="v_item_description" placeholder="Description" ><?php echo $v_item_description; ?></textarea>
<select name="v_item_category" value="<?php echo $v_item_category; ?>">
<option value="">Select</option>
<option value="Apartment" <?php echo $v_item_category; ?>>Apartment</option>
<option value="Barn" <?php echo $v_item_category; ?>>Barn</option>
</option>
</select>
<input type="hidden" name="v_item_payment_visa" value="0"  />
<input type="checkbox" name="v_item_payment_visa" value="1" <?php echo $v_item_payment_visa; ?> /><span class="li-font">VISA</span>
<input type="submit" value="Submit">
<?php echo form_close(); ?>

Controller-

$this->form_validation->set_rules('v_item_title', 'Property title', 'trim|required|xss_clean|max_length[100]');
if($this->form_validation->run() == FALSE) {
$this->session->set_userdata('validation_errors', validation_errors());
$this->session->mark_as_flash('validation_errors'); // data will automatically delete themselves after redirect
$this->session->set_flashdata('v_item_title', $this->input->post('v_item_title'));
$this->session->flashdata('v_item_title');
$this->session->set_flashdata('v_item_description', $this->input->post('v_item_description'));
$this->session->flashdata('v_item_description');
$this->session->set_flashdata('v_item_category', $this->input->post('v_item_category'));
$this->session->flashdata('v_item_category');
$this->session->set_flashdata('v_item_payment_visa', $this->input->post('v_item_payment_visa'));
$this->session->flashdata('v_item_payment_visa');
redirect('user/dashboard#new');
} else {

Redirects to-

public function dashboard() {
if($this->session->userdata('is_logged_in')){
$data['validation_errors'] = $this->session->userdata('validation_errors');
$data['v_item_title'] = $this->session->userdata('v_item_title');
$data['v_item_description'] = $this->session->userdata('v_item_description');
$data['v_item_category'] = $this->session->userdata('v_item_category');
$data['v_item_payment_visa'] = $this->session->userdata('v_item_payment_visa');
$data['homepage'] = '../../templates/vacations/users/dashboard';
$this->load->view('template_users',$data);
}else{

Had spent some good time on it but getting nowhere. Seeking help here.

回答1:

Finally I got it working-

<span class="error"><?php echo $validation_errors; ?></span>
<?php echo form_open_multipart('user/post_property'); ?>
<input name="v_item_title" placeholder="Property Title Goes Here.." value="<?php echo $v_item_title; ?>" />
<textarea name="v_item_description" placeholder="Description" ><?php echo $v_item_description; ?></textarea>
<select name="v_item_category">
<option value="0">Select</option>
<option value="Apartment" <?php if($this->session->flashdata('v_item_category') === 'Apartment') echo('selected')?>>Apartment</option>
<option value="Barn" <?php if($this->session->flashdata('v_item_category') === 'Barn') echo('selected')?>>Barn</option>
</option>
</select>
<input type="hidden" name="v_item_payment_visa" value="0"  />
<input type="checkbox" name="v_item_payment_visa" value="1" <?php if($this->session->flashdata('v_item_payment_visa')) echo 'checked="checked"'; ?> /><span class="li-font">VISA</span>
<input type="submit" value="Submit">
<?php echo form_close(); ?>