J'ai eu exactement la même erreur (Thelia 2.3.5, PHP 7.1.33)
Le problème se situe au niveau du nom du champ 'categories'. Le code généré par la classe "/core/lib/Thelia/Form/Sale/SaleModificationForm" est le suivant :
<select id="categories" name="thelia_sale_modification[categories][][]" class="form-control " multiple="" size="10" aria-required="true" required="">]
En effectuant spécifiant le nom de l'attribut "name" dans la définition du formulaire, le problème est corrigé.
->add(
'categories',
'choice',
[
'required' => true,
'multiple' => true,
'choices' => $this->getCategoriesIdArray(),
'label' => Translator::getInstance()->trans('Product categories'),
'label_attr' => [
'for' => 'categories',
'help' => Translator::getInstance()->trans('Select the categories of the products covered by this operation'),
],
'attr' => [
'size' => 10,
'name' => 'categories', // Indication du nom de l'attribut, remplace le nom généré par défaut
]
]
)
et le code généré devient
<select id="categories" name="thelia_sale_modification[categories][]" class="form-control " multiple="" size="10" aria-required="true" required="">]