Это мой первый вопрос здесь, поэтому, пожалуйста, извините за любые ошибки - я постараюсь избежать их в следующий раз. ;-)Перекрестная ссылка в форме Symfony2 не работает должным образом
Я написал собственный тип RegisterFormType для FOSUserBundle. Эта форма обрабатывает - помимо полей по умолчанию пакета - PlayerType. Этот сам PlayerType снова содержит PlayerSkillsType. Вот классы:
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilder $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('player', new PlayerType());
}
public function getName()
{
return 'signup_form';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\AcmeBundle\Entity\User',
);
}
}
class PlayerType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('firstname');
$builder->add('lastname');
$builder->add('age');
$builder->add('playerSkills', new PlayerSkillsType());
}
public function getName()
{
return 'player_form';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\AcmeBundle\Entity\Player',
);
}
}
class PlayerSkillsType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('tackling');
$builder->add('passing');
$builder->add('shooting');
}
public function getName()
{
return 'playerSkills_form';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\AcmeBundle\Entity\PlayerSkills',
);
}
}
/**
* @ORM\Entity
*/
class Player
{
/**
* @ORM\OneToOne(targetEntity="PlayerSkills", cascade={"persist"})
*
* @var PlayerSkills
*/
private $playerSkills;
}
/**
* @ORM\Entity
*/
class PlayerSkills
{
/**
* @ORM\OneToOne(targetEntity="Player", cascade={"persist"})
*
* @var Player
*/
private $player;
}
(. Я оставил из добытчиков и сеттер и несущественные свойства и методы) Это работает отлично до сих пор, форма проявляется и сохраняется. Теперь моя проблема заключается в том, что после сохранения данных в объекте PlayerSkills в данных отсутствует ссылка на объект Player.
Я думаю, что это то, что мне нужно сообщить PlayerSkillsType, что он также добавит ссылку в построитель форм ..? Или, может быть, это проблема в аннотациях Doctrine?
Подсказка очень ценится! :-)
Большое вам спасибо! Вы сделали мой день! ;-) –