Я пытаюсь создать форму «Дома» и внедрить в нее формы «Изображения». Я следую учебнику http://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Forms.Symfony - как добавить встроенные формы?
У меня есть следующая схема:
houses:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255), notnull: true }
description: { type: string(5000), notnull: true }
images:
actAs: { Timestampable: ~ }
columns:
url: { type: string(255), notnull: true }
id_house: { type: integer, notnull: true }
relations:
houses: { local: id_house, foreign: id, foreignAlias: HousesImg}
и код:
//lib/form/doctrine/ImagesCollectionForm
class ImagesCollectionForm extends sfForm
{
public function configure()
{
if(!$house= $this->getOption('house'))
{
throw new InvalidArgumentException('You must provide an house');
}
for ($i = 0; $i < $this->getOption('size',2); $i++)
{
$images = new images();
$images->house = $house;
$form = new imagesForm($images);
$this->embedForm($i, $form);
}
}
}
//lib/form/doctrine/housesForm.class.php
public function configure()
{
$form = new ImagesCollectionForm(null, array('house' => $this->getObject(),'size'=>2));
$this->embedForm('images', $form);
}
Поля отображаются, как ожидалось. Но, когда я нажимаю кнопку сохранения, я получаю пустую страницу, и данные не сохраняются в базе данных.
Пробовал ли вы использовать dev crontroler ('frontend_dev.php'), чтобы увидеть ошибки? – j0k
У вас нет опечатки? '$ images-> house = $ house;' for '$ images-> houses = $ house;' –
Я нашел проблему. В imagesForm.class.php я не добавил $ this-> useFields (...), и возникла проблема с полем house_id. Теперь он работает. – july