13
I try to embed a form type into another form type :
$builder->add('geolocation', new GeolocationType());
However when I try and bind the request to the form
if($request->getMethod() == 'POST') {
$form->bindRequest($request);
}
I get the error
Catchable Fatal Error: Argument 1 passed to Company\StoreBundle\Document\Place::setGeolocation() must be an instance of Company\StoreBundle\Document\Geolocation, array given, called in
/var/www/Company/vendor/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on line 392 and defined in /var/www/Company/src/Company/StoreBundle/Document/Place.php line 43
The data_class is set either for the PlaceType and the GeolocationType
Here is my code :
Place.php
namespace Company\StoreBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document(collection="places")
*/
class Place
{
/**
* @MongoDB\Id
*/
private $id;
/**
* @MongoDB\String
*/
private $title;
/**
* @MongoDB\EmbedOne(targetDocument="Geolocation")
*/
private $geolocation;
/**
* Get id
*
* @return id $id
*/
public function getId()
{
return $this->id;
}
/**
* Set geolocation
*
* @param Company\StoreBundle\Document\Geolocation $geolocation
*/
public function setGeolocation(\Company\StoreBundle\Document\Geolocation $geolocation)
{
$this->geolocation = $geolocation;
}
/**
* Get geolocation
*
* @return Company\StoreBundle\Document\Geolocation $geolocation
*/
public function getGeolocation()
{
return $this->geolocation;
}
/**
* Set title
*
* @param string $title
*/
public function setTitle($title)
{
$this->title