无论如何我可以分配一个实体和编辑它的一个属性在一个单一的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
抛出某种错误。
在主表单上使用带有POstrongET_DATA和POstrongUBMIT侦听器的非映射字段来预填充字段/更新对象怎么样?