У меня проблемы с FOSRestBundle и Angularjs Resource.
В моем приложении Symfony у меня есть два объекта:
class Museum
{
private $id;
private $name;
/**
* @ORM\ManyToOne(targetEntity="EV\CityBundle\Entity\City")
*/
private $city;
// ... Getter and Setteer
}
class City
{
private $id;
private $name;
// ... Getter and Setteer
}
И у меня есть одна форма с:
$builder->add('name');
$builder->add('price');
$builder->add('city', 'entity', array(
'class' => 'EVCityBundle:City',
'property' => 'name');
Итак, моя форма ждет чего-то вроде этого:
array(
name => "Museum of science",
price => "4",
city => 1234
);
И это очень хорошо работает в моем приложении Symfony.
Я использую JMSSerializerBundle для настройки того, какие данные я хочу отображать в своем API.
Итак, в моем приложении Angular я получаю свои данные с помощью ресурса Angularjs и получаю такой объект:
{
name: "Museum of science",
price: "4",
city: { "id" : 1234, "name": "France" }
}
И когда я хочу сохранить его, я использую:
museum.name = "Museum of Super science";
museum.city.id = 1337;
museum.city.name = "Lyon";
museum.$save()
И данные, отправляемые по запросу POST:
{
name: "Museum of science edited",
price: "5",
city: { "id" : 1337, "name": "Lyon" }
}
Но поскольку моя форма ожидает {city: id}, я не могу сохранить новый идентификатор города.
Я могу сделать это:
$request->request->set('city', $request->request->get('city')[id]);
но это уродливо, и мне будет трудно управлять в моем приложении, потому что у меня много объектов с подобъектами.
Итак, мой вопрос: есть ли способ автоматически правильно переназначить данные?
Большое спасибо !