我正在尝试在图像上传输入的输入字段中设置我的默认值(值表单数据库)。我试过了set_value()
但它似乎没有用。我能够获得除图像上传输入之外的所有其他字段。
我很困难,如果可能的话,我会感激一些帮助,谢谢。
我的观点:
echo form_label('Upload Recipe Image:', 'userfile');
$valueArray = array(
'name' => 'userfile',
'value' => $image
);
echo form_upload($valueArray);
controller func:
function update_recipe($id) {
$this->load->model('upload_model');
$recipe = $this->upload_model->get_recipe($id);
$config['upload_path'] = './assets/uploads/';
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '';
$config['max_width'] = '600';
$config['max_height'] = '';
$config['overwrite'] = TRUE;
$config['remove_spaces'] = TRUE;
$this->load->library('upload', $config);
if(!$this->upload->do_upload()){
$data['error'] = $this->upload->display_errors('<p>', '</p>');
$data['user_info'] = $this->model_users->view_user('users')->result();
$data['recipes'] = $this->recipe_model->get_recipes();
$this->load->view('includes/header');
$this->load->view('includes/navigation-header', $data);
$this->load->view('error', $data);
$this->load->view('includes/bottom-nav');
$this->load->view('includes/footer');
} else {
$image_data = $this->upload->data();
$data = array(
'id' => $this->input->post('recipe_id'),
'title' => strtolower($this->input->post('recipe_name')),
'description' => $this->input->post('recipe_description'),
'stars' => $this->input->post('rating'),
'directions' => $this->input->post('recipe_directions'),
'genre' => $this->input->post('recipe_genre'),
'posted' => date('Y-m-d'),
'image' => $image_data['file_name'],
'imagePath' => $image_data['full_path']
);
$this->upload_model->update_recipe_form($id, $data);
redirect('addRecipe/recipes');
}
}
答案 0 :(得分:3)
你做不到。
您的代码没问题,如果您检查HTML,您会看到输入元素中设置了值,但出于安全原因 ,所以它被忽略了。
想象一下,有人在输入中动态设置值 c:\ passwords.txt ,然后通过javascript提交表单。钢铁文件太容易了。
答案 1 :(得分:1)
您在评论中提到:
问题是他们想要改变标题而不是图像 数据库将更新标题,但将用空白替换图像 领域。我该如何解决这个问题?
假设你的update_recipe_form函数等于(来自this SO question):
function update_recipe_form($id, $data){
$this->db->where('id', $id);
$this->db->update('recipes', $data);
return true;
}
基于$this->db->update()
功能的描述:
https://ellislab.com/codeigniter/user-guide/database/active_record.html#update
如果您从输入数组中排除某些字段,那么这些值将不会是生成的SQL的一部分。
解决方案:尝试检查这些值是否为空:
$image_data['file_name'], $image_data['full_path']
如果为空,请不要将它们包含在$data
数组中,这样就不会用空的数据覆盖现有的DB值。