Symfony表单隐藏字段未与实体映射

时间:2018-06-25 14:10:20

标签: forms symfony symfony-3.4

在3.4 symfony项目中,我有一个Annonce实体,其中包含一个photos字段:

/**
     * @ORM\OneToOne(targetEntity="AnnoncesBundle\Entity\Photo")
     * @ORM\JoinColumn(name="photos_id", referencedColumnName="id")
     *
     * @Assert\Valid
     */
    private $photos;

在AnnonceType中,我有这个:

->add('photos', AjaxfileType::class, array('multiple' => true, 'dropZone' => true, 'block_name' => ""))

AjaxFileType有两个字段:

$builder->add("bnbc_ajax_file_photos", FileType::class, array("multiple" => true, "mapped" => false))
->add("photos", HiddenType::class, array("constraints" => [new ImageNumberConstraint()]));

并且我已经将AjaxFileType配置为与Photo实体进行映射:

public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AnnoncesBundle\Entity\Photo', 
....

这是我的Photo实体:

<?php

namespace AnnoncesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Context\ExecutionContextInterface;

/**
 * Photo
 *
 * @ORM\Table(name="photo")
 * @ORM\Entity(repositoryClass="AnnoncesBundle\Repository\PhotoRepository")
 */
class Photo
{

    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     * @ORM\Column(name="photos", type="text")
     */
    private $photos;

    /**
     * @return string
     */
    public function getPhotos()
    {
        return $this->photos;
    }

    /**
     * @param string $photosPaths
     */
    public function setPhotos($photosPaths)
    {
        $this->photos = $photosPaths;
    }


    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @Assert\Callback
     */
    public function validate(ExecutionContextInterface $context, $payload)
    {
        $this->photos;
    }

}

文件类型未映射,因为我只是想获取文件名(上传已经由ajax完成)。

在我的表单中,确实有一个名为photos的字段,其中包含数据,但是当我提交表单时,photos实体中没有填写字段Annonce(如果我在控制器中执行$request->get("photos"),我就得到了很好的数据)

此外,未调用我的validate函数。

我想要的是能够验证我的照片字段。

有什么不好的主意吗?

谢谢大家!

0 个答案:

没有答案