Как я могу увеличить максимальный размер имени файла вложений в Prestashop 1.7

#prestashop #prestashop-1.7

#prestashop #prestashop-1.7

Вопрос:

Как я могу увеличить максимальный размер имени файла вложений в Prestashop 1.7?
При присвоении имен файлам вложений в бэк-офисе я сталкиваюсь со следующим сообщением об ошибке.

введите описание изображения здесь

Как я могу обойти эту проблему в Prestashop 1.7? Я посмотрел онлайн и нашел некоторые решения для Prestashop 1.5 или 1.6, но не для 1.7.

Вот несколько ссылок, по которым я перешел:

Следуя приведенным выше ссылкам, я попытался:

  • В БД изменил тип столбца ‘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
 

Это должно сработать, но это решение требует изменений в основном файле. Если есть кто-нибудь, кто знает способ, которым мы можем достичь этого без изменения основных файлов, пожалуйста, поделитесь этим.