私は画像エンティティを持っています:
class Image {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", nullable=true)
*/
protected $location;
/**
* @Assert\File(maxSize="6000000")
*/
protected $file;
public function __toString()
{
return $this->getLocation()
}
//............
}
そして、ユーザーが選択した画像を削除して削除できるようにしたいと考えています。ImageSelectTypeを作成しました:
class ImageSelectType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(PROBLEM_IS_HERE, 'entity', array(
'class' => 'BloggerBlogBundle:Image',
)
)
;
}
//.......
}
しかし、エンティティ タイプがどのように機能するかを正確に理解することはできないようです。$builder->add関数の最初の引数として「場所」またはいくつかのプロパティを配置すると、たとえば次のようになります。
object(Blogger\BlogBundle\Entity\Image)[316]
protected 'id' => null
protected 'location' =>
object(Blogger\BlogBundle\Entity\Image)[79]
protected 'id' => int 16
protected 'location' => string '8a307aadd466f1b92b149d3f79069f5a1abc9cd3.png' (length=44)
protected 'file' => null
protected 'file' => null
したがって、実際にはオブジェクト全体を空の Image オブジェクトの Location プロパティに入れます。最初の引数として 'id' を配置した場合、オブジェクトが $image->id に格納されることを除いて、まったく同じ結果が得られます。実際にオブジェクト自体だけを受け取るには、$builder-add の最初の引数として何を入力すればよいですか?
関連する場合のアクションコードは次のとおりです。
public function imageDeleteAction()
{
$image = new Image();
$request = $this->getRequest();
$em = $this->getDoctrine()->getEntityManager();
$form = $this->createForm(new ImageSelectType(), $image);
$form->bindRequest($request);
var_dump($image);
exit;
}