[英]Assign and update entity property in Symfony2 form
無論如何,我可以用一個Symfony2形式分配一個實體並編輯其屬性之一嗎?
例:
任務有很多活動。
創建活動時,我通過實體表單字段分配任務。 我也想在創建實體時更新任務剩余的EstimateInSeconds。
活動實體:
<?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
property_path => "task.remainingEstimateInSeconds"
某種錯誤。
在主表單上使用帶有POST_SET_DATA和POST_SUBMIT偵聽器的非映射字段來預填充字段/更新對象該怎么辦?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.