无论如何,我可以分配一个实体并在一个Symfony2表格中编辑其中一个属性吗?
示例:
任务有很多活动。
当我创建活动时,我通过实体表单字段分配任务。我还想在创建实体时更新Task remainingEstimateInSeconds。
活动实体:
<?php
namespace AppBundle\Entity;
/**
* Activity
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\ActivityRepository")
*/
class Activity
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Assert\NotNull()
* @ORM\ManyToOne(targetEntity="Task")
*/
private $task;
}
任务实体:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Task
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\TaskRepository")
*/
class Task
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Assert\NotBlank()
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @ORM\Column(name="remainingEstimateInSeconds", type="integer", length=255, nullable=true)
*/
private $remainingEstimateInSeconds;
}
活动表格:
我当前的实现是使用非映射字段。剩下的估计值将重新设置在控制器中的任务中,这不是最佳实现。
<?php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotNull;
class ActivityType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('description');
$builder->add('task');
$builder->add('remainingEstimateInSeconds', 'integer', array(
'mapped' => false,
'constraints' => array(
new NotNull()
)
));
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'AppBundle\Entity\Activity',
)
);
}
/**
* @return string
*/
public function getName()
{
return 'activity';
}
}
我也尝试使用property_path => "task.remainingEstimateInSeconds"
,但重复property_path
会引发某种错误。
答案 0 :(得分:0)
如何在主窗体上使用带有POST_SET_DATA和POST_SUBMIT侦听器的非映射字段来预填充字段/更新对象?