Что такое правильность в symfony, чтобы заполнить форму в два этапа? - PullRequest
0 голосов
/ 06 января 2010

Hy,

Что такое правильность в symfony, чтобы заполнить форму в два этапа? Представьте, что у нас есть сущность Enterprise, и мы хотим создать форму, содержащую только обязательные поля и другую форму, чтобы при входе пользователя в систему можно было заполнить другие необязательные поля.

Как правильность формы? Теперь у меня есть форма для регистрации ('lib / form / doctrine / EnterpriseForm.class.php') и другая ('lib / form / doctrine / EnterpriseCompleteForm.class.php'). В каждом классе мы устанавливаем метки, валидаторы,. ..но проблема во втором виде. Когда я пытаюсь представить, это дает мне ошибку, потому что я не публикую обязательные поля, определенные в модели. Как я могу это сделать? Это правильно? Как я могу это исправить?

спасибо.

Ответы [ 2 ]

2 голосов
/ 06 января 2010

Вы должны удалить все ненужные поля формы во второй форме (конечно, вы должны оставить скрытое поле с идентификатором записи).
По сути, вы просто обновляете запись со второй формой, чтобы каждое обязательное поле в вашей базе данных уже было значением.

Будет полезно, если вы отправите код второй формы.

Итак, в целом, ваш подход верен (возможно, есть более эффективные способы, которых я не знаю), просто убедитесь, что ваш код правильный.


Edit:

Так что, если я вас правильно понял, то форма, которую вы используете в своем коде, обновляет существующий объект. Вы должны передать этот объект в форму, которая знает, что объект уже существует, и может соответствующим образом проверить значения:

public function executeStepOne(sfWebRequest $request){
    $this->customer = Doctrine::getTable('Customer')->find(1);
    $this->forward404Unless($this->customer);

    $this->form = new CustomerFormStepOne($this->customer);

    if ($request->isMethod(sfRequest::POST)){
        $this->processRegisterForm($request, $this->form,'paso2'); 
}

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

0 голосов
/ 07 января 2010

Ну, Феликс, я делаю "unset" изменения и он работает нормально ... но у меня есть проблема. Я пытаюсь сделать обновление по тому же действию. Мой код выглядит так.

в действии

 public function executeStepOne(sfWebRequest $request){
    $this->form = new CustomerFormStepOne();

    if ($request->isMethod(sfRequest::POST)){
        $this->processRegisterForm($request, $this->form,'paso2');

    }else{
        $this->customer = Doctrine::getTable('Customer')-> find(1);
                $this->forward404Unless($this->customer);
    }   
  }

, где код processRegisterForm:

protected function processRegisterForm(sfWebRequest $request, sfForm $form,$route)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));    
    if ($form->isValid())
    {
      $customer = $form->save();  
      $this->redirect('customer/'.$route);
    }
  }

если я попытаюсь сделать это, они выдадут мне ошибку «дубликат первичного ключа».

...