このトピックに関するドキュメントはやや薄いので、行き止まりになりました。
Job と JobAttribute の 2 つのモデルがあります。Job には多くの JobAttributes があり、JobAttribute には 1 つの Job があります。
class Job {
/**
* @ORM\OneToMany(targetEntity="JobAttribute", mappedBy="job_attributes")
*
* @var ArrayCollection
*/
private $attributes;
}
class JobAttribute {
/**
* @ORM\Column(name="type", type="string", length=50)
*
* @var string
*/
private $type;
/**
* @ORM\ManyToOne(targetEntity="Job", inversedBy="jobs")
*/
private $job;
今、私は次の FormClass を持っています:
class JobType extends AbstractType {
public function buildForm(FormBuilder $f, array $options) {
$f->add('name', 'text');
$f->add('attributes', 'collection', array('type' => new JobAttributeType()));
}
public function getName() {
return 'job';
}
}
class JobAttributeType extends AbstractType {
public function buildForm(FormBuilder $f, array $options) {
$attribute = $options['data'];
$f->add('value', $attribute->getType());
}
public function getDefaultOptions(array $options) {
return array('data_class' => 'JWF\WorkflowBundle\Entity\JobAttribute');
}
public function getName() {
return 'job_attribute';
}
}
はい、確かに、JobAttribute の type プロパティには Form フィールド タイプが含まれています。文章。
したがって、コントローラーの JobType で FormBuilder を呼び出すと、$options['data'] に JobType 内の Job-Object が正しく取り込まれます。しかし、ネストされた JobAttributeType の $options['data'] は JobAttribute オブジェクトを指していません。ヌルです。
どうしたの?協会はどこで失われますか?ネストされたフォームで $options['data'] = NULL になるのはなぜですか? ネストされた形式で (Doctrine から) 動的フィールド タイプを取得するための回避策はありますか?
前もって感謝します!