如何在symfony2表单中更改输入所需属性?

时间:2015-06-03 13:09:21

标签: symfony twig

我在添加和编辑页面上使用表单,其中有一个输入文件,这是添加记录所必需的,但在编辑页面上不需要。有没有办法在不同的页面上更改属性?

$validator
->requirePresence('title', 'create')
->notEmpty('title');

这是我的控制器

        $builder->add('title', 'text', array(
        'required' => true,
    ))->add('description', 'textarea', array(
        'required' => false,
    ))->add('fileName', 'file', array(
        'data_class' => null,
        'required' => true,
        'label' => 'Upload File'
    ));

3 个答案:

答案 0 :(得分:1)

在表单类中获取对象并检查是否添加或编辑新记录,并根据此设置“required”属性的值:

$obj = $builder->getData();

$builder->add('fileName', 'file', array(
    'data_class' => null,
    'required' => $obj->getId() === null ? true : false,
    'label' => 'Upload File'
));

答案 1 :(得分:0)

您可以使用不同的选项创建两种表单类型。

在旁注中,您不需要将“required => true”设为默认选项,

答案 2 :(得分:0)

@Umair Malik,根据你的上一条评论,你可以在你的控制器中试试这个:

if ($request->getMethod() == 'POST') {
     $form->submit($request);

    $formData = $form->getData();
    if ($formData->getFile() !== null){
        /*
         * New file has been uploaded
         * Save or copy your old record; after this will be over-written
         */
    }

    $entityManager->persist($formData);                                
    $entityManager->flush(); 
}