【发布时间】:2016-01-11 09:53:56
【问题描述】:
在 Symfony 项目中,我需要在实体上存储一些表数据,这些数据应该作为 CSV 文档上传到 Sonata admin 中。我的第一个想法是使用 Doctrine2 json_array 数据类型来存储数据,但我惊讶地发现这并不是一件容易的事。
经过一番研究,我发现Symfony\Component\Form\DataTransformerInterface 似乎是将 CSV 文件转换为数组的正确选择。问题是transform($value)方法没有接收到$value参数中上传的文件,所以我坚持这个。
在我拥有的实体管理类中:
$formMapper
[...]
->add($formMapper->create('discounts', 'file', array(
'required' => false,
'data_class' => null
))
->addViewTransformer(new CSVToArrayTransformer()))
CSVToArrayTransformer 看起来像这样:
class CSVToArrayTransformer implements DataTransformerInterface
{
public function transform($csvFile){
// here should take place the csv to array transformation, but $csvFile is null
}
}
有没有更好的方法来获得这个?
【问题讨论】:
标签: php symfony doctrine-orm sonata-admin