Propel поведения i18n и архивируемые

Я использую Propel, и я установил два поведения на один из моих столов:

<behavior name="archivable" />
<behavior name="i18n">
  <parameter name="i18n_columns" value="name" />
  <parameter name="default_locale" value="de" />
</behavior>

Проблема в том, что если я заархивирую объект этой таблицы, то поле "имя" не сохраняется. Видимо, в методе "copyInto" базового класса нет

$copyObj->setName($this->getName());

Это ошибка в Propel или я что-то здесь упускаю?

1 ответ

Вы должны заархивировать информацию i18n вручную, сделав таблицу также архивируемой и переопределив сгенерированный метод archive(). Пример приведен в блоге Propel:

class Book extends BaseBook
{
  public function archive(PropelPDO $con = null)
  {
    // archive the book reviews
    BookReviewQuery::create()
      ->filterByBook($this)
      ->archive($con);
    // archive the current object
    return parent::archive($con);
  }
}

источник: http://propel.posterous.com/introducing-archivable-behavior-and-why-softd

Другие вопросы по тегам