いくつかのデータを格納するフォームを作成したいと思います。 「Tarea」には1つ以上の「Tarea」に属する「Material」と「Material」クールが多数存在する可能性があります。 「マテリアル」エンティティには画像アップロードがある画像プロパティがあります。ManyToManyフォームの検証エラー
私は問題のない画像で新しい「素材」を作成できます。問題は、私が新しい "Tarea"を作成しようとしたときに、フォームを送信するときに "ファイルが見つかりませんでした"というエラーが出ます。
これは、ファイルのアップロード機能を持つ私の材質エンティティです:
/**
* Gitek\HotelBundle\Entity\Material
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Gitek\HotelBundle\Entity\MaterialRepository")
*/
class Material
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $nombre
*
* @ORM\Column(name="nombre", type="string", length=100)
*/
private $nombre;
/**
* @ORM\Column(type="string", nullable="true")
*
* @Assert\Image(maxSize = "500k")
*/
protected $imagen;
/**
* @var datetime $created_at
*
* @ORM\Column(name="created_at", type="datetime")
*/
private $created_at;
/**
* @var datetime $updated_at
*
* @ORM\Column(name="updated_at", type="datetime")
*/
private $updated_at;
/**
* @ORM\ManyToMany(targetEntity="Tarea", mappedBy="materiales")
*/
protected $tareas;
public function __construct()
{
$this->created_at = new \DateTime();
$this->updated_at = new \DateTime();
}
public function __toString()
{
return $this->getNombre();
}
/**
* Sube la foto de la incidencia copiándola en el directorio que se indica y
* guardando en la entidad la ruta hasta la foto
*
* @param string $directorioDestino Ruta completa del directorio al que se sube la foto
*/
public function subirImagen($directorioDestino)
{
if (null === $this->imagen) {
return;
}
$nombreArchivoImagen = uniqid('material-').'-1.'.$this->imagen->guessExtension();
$this->imagen->move($directorioDestino, $nombreArchivoImagen);
$this->setImagen($nombreArchivoImagen);
}
これは私のTareaエンティティである:
/**
* Gitek\HotelBundle\Entity\Tarea
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Gitek\HotelBundle\Entity\TareaRepository")
*/
class Tarea
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $nombre
*
* @ORM\Column(name="nombre", type="string", length=100)
*/
private $nombre;
/**
* @var datetime $created_at
*
* @ORM\Column(name="created_at", type="datetime")
*/
private $created_at;
/**
* @var datetime $updated_at
*
* @ORM\Column(name="updated_at", type="datetime")
*/
private $updated_at;
/** @ORM\ManyToOne(targetEntity="Gitek\HotelBundle\Entity\Tipotarea") */
protected $tipotarea;
/**
* @ORM\ManyToMany(targetEntity="Material", inversedBy="tareas")
* @ORM\JoinTable(name="material_tarea",
* joinColumns={@ORM\JoinColumn(name="tarea_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="material_id", referencedColumnName="id")}
*)
*/
protected $materiales;
そして、この私のMaterialTypeフォームタイプ:
<?php
namespace Gitek\BackendBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class MaterialType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('nombre')
->add('imagen')
;
}
public function getName()
{
return 'gitek_hotelbundle_materialtype';
}
}
として、私はフォームをアップロードすると、「ファイルが見つかりませんでした」というエラーが表示されました。検証が失敗するようです。
助けや手掛かりはありますか?
更新:私のTareaControllerで、私が正しく動作する検証ラインにコメントする場合。どんな手掛かり?