Понятно, что вы должны передать объект в свойство materialCost
объекта Intervention
, но вместо этого вы даете ему номер, что неверно.
Я думаю, вам лучше броситьполностью уберите MaterialCost
класс сущностей и измените отображение Intervention
materialCost
свойств следующим образом:
Вмешательство
/**
* Intervention has a materialCost value.
* @ORM/Column(type="float", name="material_cost")
*/
private $materialCost;
Но если вы уверены,о том, чтобы иметь MaterialCost
класс сущностей на месте, вот путь:
InterventionType
namespace GestionBundle\Form;
use Doctrine\ORM\EntityRepository;
use GestionBundle\Entity\Intervention;
use GestionBundle\Entity\MaterialCost;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class InterventionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('materialCost', EntityType::class, [
'required' => true,
'class' => MaterialCost::class,
'choice_label' => 'materialCost',
])
->add('comments', TextareaType::class, ['required' => false])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Intervention::class
));
}
}
Таким образом, вы можете выбрать какой-то экземпляр MaterialCost
и доводить до Intervention
.Если вы хотите иметь возможность поставить новый номер и в то же время создать объект MaterialCost
внутри формы InterventionType
, вам нужен другой метод с именем prototype .
Подумайте о том, как прочитать Как встроить коллекцию форм для этого.