Как getData () для поля collectionType - Symfony 4 - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть collectionType (Equipements) в форме Symfony 4 ORM (вмешательство). Например, это поле оборудования:

<input type="file" id="intervention_equipements_0_photoGraffiti" name="intervention[equipements][0][photoGraffiti]">

Я пытаюсь получить данные этого поля с:

$fileToTransfer = $form['intervention_equipements_0_photoGraffiti']->getData();

или

$fileToTransfer = $form['intervention[equipements][0][photoGraffiti]']->getData();

У меня ошибка Детское «вмешательство [оборудование] [0] [фотоГраффити]» не существует.

Вот мое вмешательство Тип:

$builder          
    ->add('idInstallation',         EntityType::class, [
        'class' => Installation::class,
        'choice_label' => 'numeroInstallation',
        'required' => false,
    ])

    ->add('equipements', CollectionType::class, array(
        'entry_type' => EquipementInterventionType::class,
        'entry_options' => array('label' => false),
    ))

И объект оборудования:

        $builder   
            ->add('nom',                    TextType::class, array(
                'error_bubbling' => true,
                'required' => false,
                'disabled' => true
            ))    
            ->add('numero',                 TextType::class, array(
                'error_bubbling' => true,
                'required' => false,
                'disabled' => true
            ))        
            ->add('etatEquipement',         ChoiceType::class, array(
                'choices' => $choices_controle,
                'expanded' => false,
                'multiple' => false,
                'required' => false,
                'error_bubbling' => true,
            ))
            ->add('photoEquipement',        FileType::class, array(
                'error_bubbling' => true,
                'required' => false,
                'disabled' => false,
                'data_class' => null
            ))
            ->add('graffiti',               CheckboxType::class, array(
                'required' => false,
                'error_bubbling' => true,
            ))
            ->add('photoGraffiti',          FileType::class, array(
                'error_bubbling' => true,
                'required' => false,
                'disabled' => false,
                'data_class' => null
            ))
...

Как я могу это исправить, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 27 февраля 2020

в контроллере формы

$equipements = $intervention->getEquipement();

вернет массив коллекций, тогда

foreach ($equipements as $equipement) {
    $fileToTransfer = $equipement->getPhotoGraffiti()
}

Надеюсь, у вас есть геттер и сеттер в вашем классе сущностей

0 голосов
/ 28 февраля 2020

Ну, это похоже на работу, но у меня есть другая ошибка (вызов функции-члена getClientOriginalName () для строки), когда я пытаюсь получить имя файла:

$equipements = $intervention->getEquipements();
foreach ($equipements as $equipement) {
$fileToTransfer = $equipement->getPhotoGraffiti();
$originalFilename = pathinfo($fileToTransfer->getClientOriginalName(), PATHINFO_FILENAME);
}

Любая идея?

console data :
[▼
  "equipements" => [▼
    [▼
      "photoEquipement" => null
      "photoGraffiti" => UploadedFile^ {#63 ▼
        -test: false
        -originalName: "big_8066793.jpg"
        -mimeType: "image/jpeg"
        -error: 0
        path: "/tmp"
        filename: "phpjTX7jw"
        basename: "phpjTX7jw"
        pathname: "/tmp/phpjTX7jw"
        extension: ""
        realPath: "/tmp/phpjTX7jw"
        aTime: 2020-02-28 15:42:02
        mTime: 2020-02-28 15:42:02
        cTime: 2020-02-28 15:42:02
        inode: 11787
        size: 14668
        perms: 0100600
        owner: 10015
        group: 1004
        type: "file"
        writable: true
        readable: true
        executable: false
        file: true
        dir: false
        link: false
      }
    ]
    [▶]
    [▶]
  ]
]
0 голосов
/ 27 февраля 2020

Непосредственно используйте $form->getData(). Это вернет массив со всеми вашими данными формы, которые вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...