2012-05-18 2 views
0

Я пытаюсь создать форму «Дома» и внедрить в нее формы «Изображения». Я следую учебнику 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); 
} 

Поля отображаются, как ожидалось. Но, когда я нажимаю кнопку сохранения, я получаю пустую страницу, и данные не сохраняются в базе данных.

+0

Пробовал ли вы использовать dev crontroler ('frontend_dev.php'), чтобы увидеть ошибки? – j0k

+0

У вас нет опечатки? '$ images-> house = $ house;' for '$ images-> houses = $ house;' –

+0

Я нашел проблему. В imagesForm.class.php я не добавил $ this-> useFields (...), и возникла проблема с полем house_id. Теперь он работает. – july

ответ

0

использование не указан псевдоним в связи с изображения продукта так по умолчанию Symfony выглядят его имя отношения

так и нужно изменить $ images-> дом = $ дом; to $ images-> houses = $ house; или u может установить псевдоним в отношении

надеюсь, что это поможет.

Смежные вопросы