Добавить и изменить фотографию профиля codeigniter 3 - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь создать функцию для изменения изображения профиля и включения в admin / profile

На изображении ниже нет кнопки добавления и изменения фотографии, поскольку при размещении кода вида возвращается ошибка,говорит, что переменная $ avatar не была установлена.

enter image description here

Это мой взгляд 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);
        }

}

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...