Codeigniter - Как добавить изображения в мои методы CRUD? - PullRequest
1 голос
/ 22 июня 2010

Я работаю над вторым приложением CI. Я создал несколько простых методов CRUD в моем контроллере. Мой клиент запросил, чтобы каждая запись содержала изображение. Я искал форумы и другие ресурсы для получения помощи, но мне не повезло.

Мне удалось загрузить файлы в каталог с помощью класса выгрузки файлов, однако моя проблема заключается в том, как связать загруженный файл (-ы) с соответствующей записью.

Вот соответствующие части моего MVC .., любая помощь / точка в правильном направлении будет оценена.

Просмотр - admin / locationEdit.php

<form method="post" action="<?php echo $action; ?>">
        <div class="data">
        <table>
            <tr>
                <td width="30%">ID</td>
                <td><input type="text" name="id" disabled="disable" class="text" value="<?php echo $this->validation->id; ?>"/></td>
                <input type="hidden" name="id" value="<?php echo $this->validation->id; ?>"/>
            </tr>
            <tr>
                <td valign="top">Name<span style="color:red;">*</span></td>
                <td><input type="text" name="name" class="text" value="<?php echo $this->validation->name; ?>"/>
                <?php echo $this->validation->name_error; ?></td>
            </tr>
            <tr>
                <td valign="top">Address<span style="color:red;">*</span></td>
                <td><input type="text" name="address" class="text" value="<?php echo $this->validation->address; ?>"/>
                    <?php echo $this->validation->address_error; ?></td>
            </tr>

            <tr>
                <td>&nbsp;</td>
                <td><input type="submit" value="Save"/></td>
            </tr>
        </table>
        </div>
        </form> 

Контроллер - location.php

function add(){
        // set validation properties
        $this->_set_fields();

        // set common properties
        $data['title'] = 'Add new location';
        $data['message'] = '';
        $data['action'] = site_url('admin/location/addLocation');
        $data['link_back'] = anchor('admin/location/index/','Back to list of locations',array('class'=>'back'));



            // Write to $title
      $this->template->write('title', 'Admin - Add New Location!');
    // Write to $sidebar
      $this->template->write_view('content', 'admin/locationEdit', $data);
      // Render the template
      $this->template->render();

    }

function addLocation(){
        // set common properties
        $data['title'] = 'Add new location';
        $data['action'] = site_url('admin/location/addLocation');
        $data['link_back'] = anchor('admin/location/index/','Back to list of locations',array('class'=>'back'));

        // set validation properties
        $this->_set_fields();
        $this->_set_rules();

        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '100';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

         $path_to_uploads='./uploads';
          $config['upload_path'] = $path_to_uploads;
          $this->load->library('upload', $config);

            $upload_data=$this->upload->data();
            $file_name=$upload_data['file_name'];
            $full_file_path = $path_to_uploads.'/'.$file_name;

        // run validation
        if ($this->validation->run() == FALSE){
            $data['message'] = '';
        }else{


           // save data
            $location = array('name' => $this->input->post('name'),
                            'address' => $this->input->post('address'),
                            'image_url' => $full_file_path);
            $id = $this->locationModel->save($location);

            // set form input name="id"
            $this->validation->id = $id;

            // set user message
            $data['message'] = '<div class="success">add new location success</div>';
        }

        // Write to $title
      $this->template->write('title', 'Admin - Add New Location!');
    // Write to $sidebar
      $this->template->write_view('content', 'admin/locationEdit', $data);
      // Render the template
      $this->template->render();
    }

1 Ответ

3 голосов
/ 22 июня 2010

В вашей функции загрузки получите путь к загруженному файлу:

    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $path_to_uploads='./uploads';
    $config['upload_path'] = $path_to_uploads;
    $this->load->library('upload', $config);
    //add this
    $this->upload->initialize($config);
    if (!$this->upload->do_upload()){
        $error = $this->upload->display_errors();
        echo "<script>alert($error);</script>";
    }else{
        $upload_data=$this->upload->data();
        $file_name=$upload_data['file_name'];
        $full_file_path = $path_to_uploads.'/'.$file_name;
    }

, затем вы можете вернуть $full_file_path обратно к методу, который вызвал его, и вставить его в БД, или просто вставить напрямую,

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