У меня есть два объекта в моей форме, Scene
и его Background
.Большая часть страницы - это форма для нового Scene
, и у меня есть угол, где есть миниатюра и поле для ввода файла.Всякий раз, когда поле файла изменяется, оно загружает изображение на сервер, где создается и сохраняется объект Background
.Затем он возвращает Id
сущности, которую я храню в скрытом поле в форме.
Когда я отправляю это, он говорит мне, что я пытаюсь сохранить строку в Scene#setBackground
метод.Если я удаляю атрибут hidden
из поля background
в классе формы SceneType
, он отображает поле <select>
, и все в порядке.Я добавляю атрибут hidden
и публикую те же данные, получаю вышеуказанную ошибку.
SceneType:
class SceneType extends AbstractType {
public function getName () {
return 'scene';
}
public function buildForm (FormBuilder $builder, array $options) {
$builder->add('name');
$builder->add('description');
$builder->add('panoramic', null, array('required' => false));
$builder->add('revealable', null, array('required' => false));
$builder->add('left', 'hidden');
$builder->add('right', 'hidden');
$builder->add('background', 'hidden');
}
}
Relevant section of Entity\Scene:
class Scene {
/**
* @ORM\OneToOne(
* targetEntity="Company\ProductBundle\Entity\Scene\Background",
* inversedBy="scene"
* )
* @ORM\JoinColumn(
* name="scene_background_id",
* referencedColumnName="id",
* nullable=false,
* onDelete="cascade",
* onUpdate="cascade"
* )
*/
protected $background;
public function getBackground () {
return $this->background;
}
public function setBackground (Background $background) {
$this->background = $background;
}
}
Error message:
Catchable Fatal Error: Argument 1 passed to
Company\ProductBundle\Entity\Scene::setBackground() must be an instance of
Company\Company\Entity\Scene\Background, string given, called in
/srv/http/symulator/vendor/symfony/src/Symfony/Component/Form/Util/PropertyPath.php
on line 346 and defined in
/srv/http/symulator/src/Noinc/SimulatorBundle/Entity/Scene.php line 143