Il te suffit de remplacer le serialiseur de base de Thelia par le tien.
Exemple : tu écris dans un module (ex. MonModule) une classe PointVirguleCSVSerializer, qui fait du CSV pour Excel, qui ne mange pas le même CSV que le reste du monde (mais passons) :
<?php
namespace MonModule\Serializer;
use Thelia\Core\Serializer\Serializer\CSVSerializer;
class PointVirguleCSVSerializer extends CSVSerializer
{
/**
* @var string CSV delimiter char
*/
protected $delimiter = ';';
public function getMimeType()
{
return "application/vnd.ms-excel";
}
public function getName()
{
return "CSV for Excel";
}
public function serialize($data)
{
$csvRow = parent::serialize($data);
return utf8_decode(str_replace('.', ',', $csvRow));
}
public function unserialize(\SplFileObject $fileObject)
{
$data = parent::unserialize($fileObject);
foreach ($data as &$item) {
foreach ($item as &$value) {
if (!preg_match('!!u', $value)) {
$value = utf8_decode($value);
}
}
}
return $data;
}
}
Ensuite, dans le config.xml du module, tu viens écraser le serialiseur par défaut de Thelia, qui a l'iD "thelia.serializer.csv":
...
<services>
...
<service id="thelia.serializer.csv" class="MonModule\Serializer\PointVirguleCSVSerializer">
<tag name="thelia.serializer" />
</service>
...
</services>
...
Et voilà.