Где и как заполнить, возвращаемый фабрикой, объект данными по умолчанию?

SiZE

Новичок
Типичный MVC. Генерируется форма (собирается из нескольких вьюх и моделей), которую пользователь заполняет, данные сохраняются в БД. Формы отличаются в зависимости от выбранного документа, но имеют некоторый общий набор данных. Часть данных в форме фиксирована, например, ФИО, эл.почта и тп. Другая часть динамически наполняемая пользователем, например, список товаров. Пользователь добавляет в форму столько сколько ему нужно.

При создании формы, для облегчения заполнения некоторые поля формы заполняются, значениями по умолчанию. Я не знаю, как реализовать это заполнение. Точней где заполнять объект предустановленными данными? Где хранить эти данные? Мне бы очень помогло подробное объяснение реализации.

PHP:
class DocController {
  public function actionCreate( $type ){
    $factory = new DocFactory();
    $doc = $factory->createDoc( $type );
    if ( $doc === null ) {
      throw new CHttpException(404,'Page doesn\'t exists');
    }

    if ( isset( $_POST['somedata'] ) ) {
       // здесь будет сохранение введенных пользователем данных
    } else {
      // здесь надо решить, как заполнить данными по умолчанию $doc
    }

    $this->render( $doc->getView('create'), array(
      // в представлении значения в форму будут взяты из объекта $doc
      'doc' => $doc
    ));
  }
}
PHP:
class DocFactory {

    protected $contract_profitable;

    public function createDoc( $type ){
        switch( $type ){
            case 'contract_profitable':
                return $this->getContractProfitable();
            break;
        }
        return null;
    }

    public function getContractProfitable(){
        if ( $this->contract_profitable === null ) {
            $this->contract_profitable = new DocContractProfitable();
        }
        return $this->contract_profitable;
    }

}

interface IDoc {
  public function getView( $view );
}

class DocContractProfitable implements IDoc {
   public function getView( $view ){
       return $view;
   }
}
UPD: Все решил через наследование и сценарии в моделях
 
Последнее редактирование:
Сверху