taka10 Posted September 29, 2017 Share Posted September 29, 2017 (edited) Bonjour, J'ai tenté d'ajouter une image sur l'admin afin de pouvoir uploader une 2ème image depuis le BackOffice. J'ai Overridé le controller AdminManufacturersController.php comme ceci, en appelant "drapeau" le nouveau champ : <?php class AdminManufacturersControllerCore extends AdminController { public $bootstrap = true ; /** @var array countries list */ protected $countries_array = array(); public function __construct() { $this->table = 'manufacturer'; $this->className = 'Manufacturer'; $this->lang = false; $this->deleted = false; $this->allow_export = true; $this->list_id = 'manufacturer'; $this->identifier = 'id_manufacturer'; $this->_defaultOrderBy = 'name'; $this->_defaultOrderWay = 'ASC'; $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); $this->context = Context::getContext(); $this->fieldImageSettings = array( 'name' => 'logo', 'dir' => 'm' ); $this->fieldImageSettings_v2 = array( 'name' => 'drapeau', 'dir' => 'd' ); $this->fields_list = array( 'id_manufacturer' => array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs' ), 'logo' => array( 'title' => $this->l('Logo'), 'image' => 'm', 'orderby' => false, 'search' => false, 'align' => 'center', ), 'drapeau' => array( 'title' => $this->l('drapeau'), 'image' => 'd', 'orderby' => false, 'search' => false, 'align' => 'center', ), 'name' => array( 'title' => $this->l('Name'), 'width' => 'auto' ), 'addresses' => array( 'title' => $this->l('Addresses'), 'search' => false, 'align' => 'center' ), 'products' => array( 'title' => $this->l('Products'), 'search' => false, 'align' => 'center', ), 'active' => array( 'title' => $this->l('Enabled'), 'active' => 'status', 'type' => 'bool', 'align' => 'center', 'class' => 'fixed-width-xs', 'orderby' => false ) ); parent::__construct(); } public function renderForm() { if (!($manufacturer = $this->loadObject(true))) { return; } $image = _PS_MANU_IMG_DIR_.$manufacturer->id.'.jpg'; $image_url = ImageManager::thumbnail($image, $this->table.'_'.(int)$manufacturer->id.'.'.$this->imageType, 350, $this->imageType, true, true); $image_size = file_exists($image) ? filesize($image) / 1000 : false; $image_v2 = _PS_MANU_IMG_DIR_.$manufacturer->id.'_v2.jpg'; $image_url_v2 = ImageManager::thumbnail($image_v2, $this->table.'_'.(int)$manufacturer->id.'.'.$this->imageType, 350, $this->imageType, true, true); $image_size_v2 = file_exists($image_v2) ? filesize($image_v2) / 1000 : false; $this->fields_form = array( 'tinymce' => true, 'legend' => array( 'title' => $this->l('Manufacturers'), 'icon' => 'icon-certificate' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Name'), 'name' => 'name', 'col' => 4, 'required' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('Short description'), 'name' => 'short_description', 'lang' => true, 'cols' => 60, 'rows' => 10, 'autoload_rte' => 'rte', //Enable TinyMCE editor for short description 'col' => 6, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('Description'), 'name' => 'description', 'lang' => true, 'cols' => 60, 'rows' => 10, 'col' => 6, 'autoload_rte' => 'rte', //Enable TinyMCE editor for description 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'file', 'label' => $this->l('Logo'), 'name' => 'logo', 'image' => $image_url ? $image_url : false, 'size' => $image_size, 'display_image' => true, 'col' => 6, 'hint' => $this->l('Upload a manufacturer logo from your computer.') ), array( 'type' => 'file', 'label' => $this->l('Drapeau'), 'name' => 'drapeau', 'image' => $image_url_v2 ? $image_url_v2 : false, 'size' => $image_size_v2, 'display_image' => true, 'col' => 6, 'hint' => $this->l('Upload a manufacturer drapeau from your computer.') ), array( 'type' => 'text', 'label' => $this->l('Meta title'), 'name' => 'meta_title', 'lang' => true, 'col' => 4, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'text', 'label' => $this->l('Meta description'), 'name' => 'meta_description', 'lang' => true, 'col' => 6, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'tags', 'label' => $this->l('Meta keywords'), 'name' => 'meta_keywords', 'lang' => true, 'col' => 6, 'hint' => array( $this->l('Forbidden characters:').' <>;=#{}', $this->l('To add "tags," click inside the field, write something, and then press "Enter."') ) ), array( 'type' => 'switch', 'label' => $this->l('Enable'), 'name' => 'active', 'required' => false, 'class' => 't', 'is_bool' => true, 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ) ) ) ); if (!($manufacturer = $this->loadObject(true))) { return; } if (Shop::isFeatureActive()) { $this->fields_form['input'][] = array( 'type' => 'shop', 'label' => $this->l('Shop association'), 'name' => 'checkBoxShopAsso', ); } $this->fields_form['submit'] = array( 'title' => $this->l('Save') ); foreach ($this->_languages as $language) { $this->fields_value['short_description_'.$language['id_lang']] = htmlentities(stripslashes($this->getFieldValue( $manufacturer, 'short_description', $language['id_lang'] )), ENT_COMPAT, 'UTF-8'); $this->fields_value['description_'.$language['id_lang']] = htmlentities(stripslashes($this->getFieldValue( $manufacturer, 'description', $language['id_lang'] )), ENT_COMPAT, 'UTF-8'); } return parent::renderForm(); } protected function afterImageUpload() { $res = true; $generate_hight_dpi_images = (bool)Configuration::get('PS_HIGHT_DPI'); /* Generate image with differents size */ if (($id_manufacturer = (int)Tools::getValue('id_manufacturer')) && isset($_FILES) && count($_FILES) && file_exists(_PS_MANU_IMG_DIR_.$id_manufacturer.'.jpg')) { $images_types = ImageType::getImagesTypes('manufacturers'); foreach ($images_types as $k => $image_type) { $res &= ImageManager::resize( _PS_MANU_IMG_DIR_.$id_manufacturer.'.jpg', _PS_MANU_IMG_DIR_.$id_manufacturer.'-'.stripslashes($image_type['name']).'.jpg', (int)$image_type['width'], (int)$image_type['height'] ); if ($generate_hight_dpi_images) { $res &= ImageManager::resize( _PS_MANU_IMG_DIR_.$id_manufacturer.'.jpg', _PS_MANU_IMG_DIR_.$id_manufacturer.'-'.stripslashes($image_type['name']).'2x.jpg', (int)$image_type['width']*2, (int)$image_type['height']*2 ); } } $current_logo_file = _PS_TMP_IMG_DIR_.'manufacturer_mini_'.$id_manufacturer.'_'.$this->context->shop->id.'.jpg'; if ($res && file_exists($current_logo_file)) { unlink($current_logo_file); } } /* Generate image with differents size */ if (($id_manufacturer = (int)Tools::getValue('id_manufacturer')) && isset($_FILES) && count($_FILES) && file_exists(_PS_MANU_IMG_DIR_.$id_manufacturer.'_v2.jpg')) { $images_types = ImageType::getImagesTypes('manufacturers'); foreach ($images_types as $k => $image_type) { $res &= ImageManager::resize( _PS_MANU_IMG_DIR_.$id_manufacturer.'_v2.jpg', _PS_MANU_IMG_DIR_.$id_manufacturer.'-'.stripslashes($image_type['name']).'_v2.jpg', (int)$image_type['width'], (int)$image_type['height'] ); if ($generate_hight_dpi_images) { $res &= ImageManager::resize( _PS_MANU_IMG_DIR_.$id_manufacturer.'_v2.jpg', _PS_MANU_IMG_DIR_.$id_manufacturer.'-'.stripslashes($image_type['name']).'_v22x.jpg', (int)$image_type['width']*2, (int)$image_type['height']*2 ); } } $current_logo_file_v2 = _PS_TMP_IMG_DIR_.'manufacturer_mini_'.$id_manufacturer.'_'.$this->context->shop->id.'_v2.jpg'; if ($res && file_exists($current_logo_file_v2)) { unlink($current_logo_file_v2); } } if (!$res) { $this->errors[] = Tools::displayError('Unable to resize one or more of your pictures.'); } return $res; } } Le champ apparait bien en admin, je sélectionne une image mais elle n'est pas enregistrée. Pouvez vous me dépanner ? D'avance merci Edited September 30, 2017 by taka10 (see edit history) Link to comment Share on other sites More sharing options...
taka10 Posted October 1, 2017 Author Share Posted October 1, 2017 Est ce qu'il y a un autre fichier à modifier pour enregistrer les images au bon endroit ? Link to comment Share on other sites More sharing options...
taka10 Posted October 4, 2017 Author Share Posted October 4, 2017 A priori d'après mes recherches, ça ne se gère pas au niveau de la base de données. Je suis plutôt étonné que personne n'ai eu à affronter ce genre de problème. J'ai déjà fait la même chose pour les catégories mais là c'est différent. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now