我的Symfony2應用程序中有一個表單,主要用於保存實體,但我添加了一個額外的非映射字段用於上傳文件,然後處理和刪除。但是,我無法弄清楚如何驗證這個額外的字段。當所有其他字段映射到實體時,驗證Symfony2表單類中的非映射字段
這是在我的表單類的buildForm()
方法定義:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text', array('label' => 'Name'))
// ...
->add('data', 'file', array(
'label' => 'CSV Data File',
'mapped' => false,
'required' => false,
));
}
我最初嘗試添加驗證了這一領域的bundle的validation.yml
文件像這樣,但這個領域不是部分實體,它拋出一個錯誤,說這樣。
My\Bundle\Entity\MyEntity:
properties:
data:
- File:
maxSize: 1024k
mimeTypes: text/*
mimeTypesMessage: Please upload a CSV file
我的下一個嘗試是窗體類本身添加的約束,像這樣,但它似乎只能驗證陣列這種方式,而不是對象,我猜是因爲它主要依賴於我的實體。
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$collectionConstraint = new Collection(array(
'data' => new File(array(
'maxSize' => '1024k',
'mimeTypes' => 'text/*',
'mimeTypesMessage' => 'Please upload a CSV file',
)),
));
$resolver->setDefaults(array(
'data_class' => 'My\Bundle\Entity\MyEntity',
'constraints' => $collectionConstraint,
));
}
從文檔,它看起來像我可以用$this->get('validator')->validateValue();
驗證自身多餘的領域,但我還蠻想一次驗證整個形式和顯示與非映射任何錯誤領域本身。
有沒有人有任何想法?
Symfony 2.0或2.1? –
Symfony 2.1.3-DEV – Kris