Я пытаюсь создать функцию для изменения изображения профиля и включения в admin / profile
На изображении ниже нет кнопки добавления и изменения фотографии, поскольку при размещении кода вида возвращается ошибка,говорит, что переменная $ avatar
не была установлена.
Это мой взгляд profile.php
<div class="image-area">
<!--<img src="<?= base_url()?>public/images/user.png" width="100px" alt="User" />-->
<div id="profile_page">
<ul>
<?php if(isset($avatar)) // if the avatar has been uploaded then display it?>
<img src="<?php echo base_url().$avatar; ?>" />
<?php
// underneath display the form to update the picture
echo form_open_multipart('admin/edit_profilepic');
$Fdata = array('name' => 'avatar', 'class' => 'file'); // set your file and class for the image
echo form_upload($Fdata); // upload the datas here the image that user has selected.
echo form_submit('mysubmit', 'UpdatePic'); // your submit button fucntion
?>
</ul>
</div>
</div>
И мойконтроллер Profile.php
у меня есть эта функция.Когда я меняю изображение, я изменяю его размер и отправляю в базу данных.
public function edit_profilepic(){
//show($_FILES);
if($_FILES['avatar']['error'] == 0){
//upload and update the file
$config['upload_path'] = 'public/images/profile/'; // Location to save the image
$config['allowed_types'] = 'gif|jpg|png';
$config['overwrite'] = false;
$config['remove_spaces'] = true;
//$config['max_size'] = '100';// in KB // if required, remove the comment and give the size
$this->load->library('upload', $config); //codeigniter default function
if ( ! $this->upload->do_upload('avatar')){
redirect("admin/profile/".$username); // redirect page if the load fails.
}
else{
//Image Resizing
$config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
$config['maintain_ratio'] = FALSE;
$config['width'] = 200; // image re-size properties
$config['height'] = 300; // image re-size properties
$this->load->library('image_lib', $config); //codeigniter default function
if ( ! $this->image_lib->resize()){
redirect("admin/profile/".$username); // redirect page if the resize fails.
}
$this->obj_model->update_profile_pic($this->tank_auth->get_user_id()); // here we are using the tank auth library for user log-in. we are getting the user id and updating the resized image as that particular's avatar.
redirect("admin/profile/".$username);
}
} else {
//show an error to select a picture before clicking the update pic button
redirect("admin/profile/".$username);
}
}
И у моего Profile_model.php
есть функция обновления моего изображения на BD
<?php
class Profile_model extends CI_Model{
public function update_profile_pic($id){
show($id);
if($_FILES['avatar']['error'] == 0){
$relative_url = 'public/images/profile/'.$this->upload->file_name;
$profile_data['avatar'] = $relative_url;
}
$this->db->where('ci_users', $id);
$this->db->update('user_profiles', $profile_data);
}
}
?>