Я создал форму, основанную на поле объекта. Эта форма состоит из флажков, которые позволяют пользователю выбирать объект (здесь «автомобиль»). Это прекрасно работает, но мне нужно настроить рендеринг, чтобы получить дополнительную информацию. В настоящее время единственной отображаемой информацией является атрибут «id». В моем случае я хотел бы отобразить дополнительную информацию о лицах в форме, такой как цвет, бренд и т. Д. Кто-нибудь знает, как действовать?Как настроить рендеринг формы, когда на основе поля объекта в symfony 2?
Контроллер:
public function chooserAction() {
//symfony.com/doc/current/reference/forms/types/entity.html
$cars = $this->getDoctrine()
->getRepository('CarBundle:Car')
->find(1);
$formBuilder = $this->createFormBuilder();
/*
foreach ($cars as $car) {
$formBuilder->add($car->getId() ,'checkbox')->getForm();
}
*/
$formBuilder->add('cars', 'entity', array(
'class' => 'CarBundle:Car',
'property' => 'id',
'expanded' => 'true',
'multiple' => 'true',
));
$formBuilder->add('save', 'submit');
$form = $formBuilder->getForm();
$request = $this->get('request');
$form->handleRequest($request);
if ($form->isValid()) {
echo "ok";
// return $this->redirect($this->generateUrl('car_show', array('id' => $car->getId())));
}
return $this->render('CarBundle:Car:chooser.html.twig', array('form' => $form->createView()));
}
Субъект:
<?php
namespace Foobar\CarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Car
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Foobar\CarBundle\Entity\CarRepository")
*/
class Car
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="brand", type="string", length=255)
*/
private $brand;
/**
* @var string
*
* @ORM\Column(name="color", type="string", length=255)
*/
private $color;
/**
* @var integer
*
* @ORM\Column(name="power", type="integer")
*/
private $power;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Car
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set brand
*
* @param string $brand
* @return Car
*/
public function setBrand($brand)
{
$this->brand = $brand;
return $this;
}
/**
* Get brand
*
* @return string
*/
public function getBrand()
{
return $this->brand;
}
/**
* Set color
*
* @param string $color
* @return Car
*/
public function setColor($color)
{
$this->color = $color;
return $this;
}
/**
* Get color
*
* @return string
*/
public function getColor()
{
return $this->color;
}
/**
* Set power
*
* @param integer $power
* @return Car
*/
public function setPower($power)
{
$this->power = $power;
return $this;
}
/**
* Get power
*
* @return integer
*/
public function getPower()
{
return $this->power;
}
}
Вид:
car chooser
{{ form(form) }}
Спасибо, я thinked о, но это не будет достаточно, если вам нужно, чтобы отобразить изображение. –
Обновление с помощью http://symfony.com/doc/current/cookbook/form/form_customization.html –