0

I need to add default images to post, if user do not select an image to upload. Field to load the image optional. How can i make it?

I use this controller.

public function news() {
        $cur_user_id['user_id'] = $this->ion_auth->user()->row()->user_id;
        $this->db->update('news', $cur_user_id);

        $crud = new grocery_CRUD();
        $crud->set_table('news')
                ->display_as('title', 'Заголовок')
                ->display_as('content', 'Текст')
                ->display_as('date', 'Дата')
                ->display_as('urlpict', 'Изображение')
                ->display_as('hide', 'Отображение')
                ->display_as('tags', 'Теги')
                ->display_as('add_new_tags', 'Добавить новые теги')
                ->display_as('menu_id', 'Раздел меню');
        $crud->unset_columns('user_id');
        $crud->required_fields('title', 'content', 'date', 'hide');
        //relation
        $crud->set_relation('menu_id', 'my_menu', 'name');
        $crud->set_relation_n_n('tags', 'tag2art', 'tags', 'art_id', 'tag_id', 'tag');
        //configuration for uploading 
        $this->config->set_item('grocery_crud_file_upload_allow_file_types', 'gif|jpeg|jpg|png');
        $crud->set_field_upload('urlpict', 'assets/uploads/images');
        //callback function

        $crud->callback_after_upload(array($this, 'func_callback_after_upload'));

        $state = $crud->getState();
        $state_info = $crud->getStateInfo();

        if ($state == 'add') {
            $crud->fields('title', 'content', 'date', 'urlpict', 'hide', 'tags', 'add_new_tags', 'menu_id');
            $crud->callback_add_field('add_new_tags', array($this, 'add_field_callback_1'));
        } else {
            $crud->unset_fields('add_new_tags', 'views', 'user_id');
        }
        $output = $crud->render();
        $this->load->view('administrator/news', $output);
    }

It's my callback_function

function func_callback_after_upload($uploader_response, $field_info, $files_to_upload) 
{

    $config['image_library'] = 'gd2';
    $config['source_image'] = $field_info->upload_path . '/' . $uploader_response[0]->name;
    $config['create_thumb'] = FALSE;
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = 175;
    $config['height'] = 175;

    $this->load->library('image_lib', $config); 
    $this->image_lib->resize(); 
      return true;
}
Rahil Wazir
  • 10,007
  • 11
  • 42
  • 64
Mihail Kuznetsov
  • 323
  • 5
  • 22
  • How can I set the default value for download? – Mihail Kuznetsov May 04 '14 at 12:23
  • $crud->set_field_upload('urlpict', 'assets/uploads/images'); – Mihail Kuznetsov May 04 '14 at 12:24
  • I don't think Codeigniter has such thing but you can check whether a file is selected for the file field or not and accordingly you can do your logic. If file is selected then you can upload selected file else you can upload default file – user3470953 May 04 '14 at 12:28
  • Logical solution, and I wanted to do, but not impossible. `code` $crud->callback_after_update(array($this, 'default_img')); `code` callback_function function default_img($post_array, $primary_key) { if (!$this->input->post('urlpict')) { $default_img = array( "id" => $primary_key, "urlpict" => "news_default.png" ); $this->db->update('news', $default_img); return true; } } – Mihail Kuznetsov May 04 '14 at 14:51
  • but no result I do not get – Mihail Kuznetsov May 04 '14 at 14:51

1 Answers1

0

Mine solution Instead $crud->callback_after_update(array($this, 'default_img')); I used $crud->callback_after_insert(array($this, 'default_img'));

And my controller

function default_img($post_array, $primary_key) {
        if (!$this->input->post('urlpict')) {
            $default_img = array(
                "id" => $primary_key,
                "urlpict" => "news_default.png"
            );

            $this->db->update('news', $default_img, array('id' => $primary_key));
            return true;
        }
    }
Mihail Kuznetsov
  • 323
  • 5
  • 22