Cree un campo de carga de archivos multilingüe en PrestaShop

En este blog, aprenderemos cómo crear un campo de carga de archivos multilingüe en la clase PrestaShop HelperForm. Así que veamos juntos cómo hacerlo con PrestaShop. A veces, necesitamos cargar archivos en el módulo según el idioma. Agregaremos el campo de carga de archivos a la página de configuración del formulario usando la función renderForm. función pública renderForm() { $fields_form = [
‘form’ => [
‘legend’ => [
‘title’ => $this->l(‘Settings’),
‘icon’ => ‘icon-cogs’,
]’entrada’ => [
[
‘type’ => ‘file_lang’,
‘label’ => $this->l(‘Multilang image’),
‘name’ => ‘WK_MULTILANG_IMG’,
‘lang’ => true,
] ]’enviar’ => [
‘title’ => $this->l(‘Save’),
],],]; $lang = nuevo Idioma((int) Configuración::get(‘PS_LANG_DEFAULT’)); $ayudante = nuevo HelperForm(); $ayudante->show_toolbar = false; $ayudante->tabla = $this->tabla; $helper->default_form_language = $idioma->id; $ayudante->módulo = $this; $helper->allow_employee_form_lang = Configuración::get(‘PS_BO_ALLOW_EMPLOYEE_FORM_LANG’)? Configuración::get(‘PS_BO_ALLOW_EMPLOYEE_FORM_LANG’): 0; $ayudante->identificador = $este->identificador; $helper->submit_action = ‘submitStoreConf’; $helper->currentIndex = $this->context->link->getAdminLink(‘AdminModules’, false). ‘&configurar=’. $este->nombre. ‘&tab_module=’. $this->pestaña. ‘&nombre_módulo=’. $este->nombre; $helper->token = Herramientas::getAdminTokenLite(‘AdminModules’); $ayudante->tpl_vars = [
‘uri’ => $this->getPathUri(),
‘fields_value’ => $this->getConfigFieldsValues(),
‘languages’ => $this->context->controller->getLanguages(),
‘id_language’ => $this->context->language->id,
]; devolver $ayudante->generarForm([$fields_form]); } En el código anterior, utilizamos el campo tipo de archivo y ‘tipo’ => ‘file_lang’ en lugar de ‘tipo’ => ‘archivo’ y agregamos los nuevos parámetros ‘lang’ => true para multilingüe. El resto del código es el mismo que se utilizó para crear el formulario. Ahora crearemos el archivo form.tpl en la siguiente ruta form_name/views/templates/admin/_configure/helpers/form/ Hemos sobrescrito el archivo form.tpl usando nuestro formulario y usamos el siguiente código en el archivo form.tpl { extiende file=»helpers/form/form.tpl»} {nombre de bloque=»campo»} {if $input.type == ‘file_lang’}

{foreach from=$linguals item=idioma} {si $idioma|count > 1}

{/si}

{si $idiomas|cuenta > 1}

{/si}
{si está establecido ($fields_value)[$input.name][$language.id_lang]) && $valor_campo[$input.name][$language.id_lang] != »}

{/si}

{si $idiomas|cuenta > 1}

{/si} {/foreach} {if isset($input.desc) &&!empty($input.desc)}

{$entrada.desc}

{/si }

{else} {$smarty.block.parent} {/if} {/block} En el código anterior, ampliamos el módulo auxiliar tpl y anulamos el bloque de campo. Hemos verificado la condición if para el campo de tipo file_lang y escrito el código del campo multilingüe y en la otra parte devolvemos el bloque del campo padre para otros campos. Ahora aparecerá el campo de carga de archivos según el idioma. Ahora guardaremos imágenes por idioma usando el siguiente código. función pública postProcess() { if (Tools::isSubmit(‘submitStoreConf’)) { $linguals = Idioma::getLanguages(false); $valores = []; $update_images_values ​​= falso; foreach ($idiomas como $lang) { if (isset($_FILES[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]]) && isset($_FILES[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]][‘tmp_name’]) && !vacío($_FILES[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]][‘tmp_name’])) { si ($error = ImageManager::validateUpload($_FILES)[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]]4000000)) { return $this->displayError($error); } más { $ext = substr($_FILES[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]][‘name’]strrpos($_FILES[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]][‘name’], ‘.’) + 1); $nombre_archivo = md5($_FILES[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]][‘name’]). ‘.’ . $externo; si (!move_loaded_file($_FILES[‘WK_MULTILANG_IMG_’ . $lang[‘id_lang’]][‘tmp_name’], nombredir(__FILE__) . DIRECTORIO_SEPARADOR . ‘img’. DIRECTORIO_SEPARADOR . $file_name)) { return $this->displayError($this->l(‘Se produjo un error al intentar cargar el archivo.’)); } else { if (Configuración::hasContext(‘WK_MULTILANG_IMG’, $lang[‘id_lang’]Tienda::getContext()) && Configuración::get(‘WK_MULTILANG_IMG’, $lang[‘id_lang’]) != $nombre_archivo) { @unlink(nombredir(__FILE__) . DIRECTORY_SEPARATOR . ‘img’ . DIRECTORY_SEPARATOR . Configuración::get(‘WK_MULTILANG_IMG’, $lang[‘id_lang’])); } $valores[‘WK_MULTILANG_IMG’][$lang[‘id_lang’]]= $nombre_archivo; } } $update_images_values ​​​​= verdadero; } } if ($update_images_values ​​​​&& isset($valores[‘WK_MULTILANG_IMG’])) { Configuración::updateValue(‘WK_MULTILANG_IMG’, $valores[‘WK_MULTILANG_IMG’]); } return $this->displayConfirmation($this->l(‘La configuración ha sido actualizada.’)); } devolver »; } Aquí lo hemos hecho en la página de configuración. Podemos hacer el mismo paso para el módulo del controlador de administración. Eso es todo en este blog. Espero que te ayude. Si tiene algún problema o duda en el proceso anterior, no dude en contactarnos en la sección de comentarios. Estaremos encantados de ayudarte. Además, puede explorar nuestros servicios de desarrollo PrestaShop y una amplia gama de módulos PrestaShop de calidad. Para cualquier duda contáctanos al [email protected].

About Francisco

Check Also

Potenciando los medios y el entretenimiento: revolucione con Revenue Cloud

La convergencia de la tecnología y los hábitos de consumo de contenidos ha traído beneficios, …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *