#prestashop #prestashop-1.7
#prestashop #prestashop-1.7
Вопрос:
Как я могу увеличить максимальный размер имени файла вложений в Prestashop 1.7?
При присвоении имен файлам вложений в бэк-офисе я сталкиваюсь со следующим сообщением об ошибке.
Как я могу обойти эту проблему в Prestashop 1.7? Я посмотрел онлайн и нашел некоторые решения для Prestashop 1.5 или 1.6, но не для 1.7.
Вот несколько ссылок, по которым я перешел:
- https://www.prestashop.com/forums/topic/63332-bug-the-field-mime-is-too-long-32-chars-max/?tab=comments#comment-1189602
- https://www.prestashop.com/forums/topic/81129-solvedhow-to-change-the-length-of-the-file-name-of-the-attachement/?tab=comments#comment-1197114
Следуя приведенным выше ссылкам, я попытался:
- В БД изменил тип столбца ‘name’ в таблице ‘ps_attachment_lang’ на ‘varchar (128)’.
- В Attachment.php (/classes/Attachment.php ), убедился, что размер равен 128.
'name' => ['type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128],
- В AdminProductsController.php (/controllers/admin/AdminProductsController.php ), изменил часть функции ajaxProcessAddAttachment(), с
if (!Validate::isGenericName($name)) {
$_FILES['attachment_file']['error'][] = $this->trans('Invalid name for %s language', [$language['name']], 'Admin.Notifications.Error');
} elseif (Tools::strlen($name) > 32) {
$_FILES['attachment_file']['error'][] = $this->trans('The name for %1s language is too long (- chars max).', [$language['name'], 32], 'Admin.Notifications.Error');
}
Для
if (!Validate::isGenericName($name)) {
$_FILES['attachment_file']['error'][] = $this->trans('Invalid name for %s language', [$language['name']], 'Admin.Notifications.Error');
} elseif (Tools::strlen($name) > 64) {
$_FILES['attachment_file']['error'][] = $this->trans('The name for %1s language is too long (- chars max).', [$language['name'], 64], 'Admin.Notifications.Error');
}
Но, к сожалению, ни один из них не сработал.
Заранее спасибо.
Ответ №1:
Это мой собственный вопрос, но я нашел одно решение.
В AttachmentConstraint.php (в /src/Core/Domain/Attachment/Configuration/AttachmentConstraint.php ), найдите строку
const MAX_NAME_LENGTH = 32;
и измените его на любое число, которое меньше, чем может содержать ваша таблица базы данных:
//const MAX_NAME_LENGTH = 32;
const MAX_NAME_LENGTH = 128; // this number needs to be lower than `name` column in `ps_attachment_lang` table
Это должно сработать, но это решение требует изменений в основном файле. Если есть кто-нибудь, кто знает способ, которым мы можем достичь этого без изменения основных файлов, пожалуйста, поделитесь этим.