0

Houses というフォームを作成し、それに Images フォームを埋め込もうとしています。チュートリアルhttp://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Formsに従っています。

次のスキーマがあります。

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);
}

フィールドは期待どおりに表示されます。しかし、保存ボタンを押すと空白のページが表示され、データはデータベースに保存されません。

4

1 に答える 1

0

製品との画像関係でエイリアスを指定していないため、デフォルトでsymfonyは関係名を探します

$images->house = $house; を変更する必要があります。$images->houses = $house; へ。または関連してエイリアスを設定できます

これが役立つことを願っています。

于 2012-06-10T20:54:20.397 に答える