Symfony 1.4 и редактирование / создание нескольких моделей на одной форме? - PullRequest
0 голосов
/ 22 августа 2011

У меня есть модуль, который называется Users, который позволяет мне создавать пользователей.Тем не менее, у меня также есть модель под названием Профили.Таблица отличается от пользователей, но всякий раз, когда я создаю нового пользователя, я хочу добавить новый профиль.Также я хочу добавить в таблицу профиля два поля, доступных в форме пользователя.Ребята, вы знаете, как это сделать в Symfony?

Ответы [ 3 ]

0 голосов
/ 23 августа 2011

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

protected function processForm(sfWebRequest $request, sfForm $form){

$form->bind($request->getParameter('registration'));

if ($form->isValid())
{

  $user= new sfGuardUser();
  $user->setUsername($form->getValue('username'));
  $user->setPassword($form->getValue('password'));
  $user->setIsActive(true);
  $user->save();

  $profile= new sfGuardUserProfile();
  $profile->setUserId($user->getId());
  $profile->setName($form->getValue('nombre'));
  $profile->setSurname($form->getValue('apellidos'));
  $profile->setMail($form->getValue('username'));
  $profile->save();

  $this->redirect('@user_home');
}

}

0 голосов
/ 25 августа 2011
0 голосов
/ 23 августа 2011

взгляните на sfdoctrineapply они делают почти то, что вы хотите.

или подробно

#schema for the profile 
sfGuardUserProfile:
  tableName: sf_guard_user_profile
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    user_id:
      type: integer(4)
      notnull: true
    email:
      type: string(80)
    fullname:
      type: string(80)
    validate:
      type: string(17)
  # Don't forget this!
  relations:
    User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one  
      onDelete: cascade    
      foreignType: one
      foreignAlias: Profile

и в вашей форме, где вы создаете пользователя:

public function doSave($con = null)
  {
    $user = new sfGuardUser();
    $user->setUsername($this->getValue('username'));
    $user->setPassword($this->getValue('password'));
    // They must confirm their account first
    $user->setIsActive(false);
    $user->save();
    $this->userId = $user->getId();

    return parent::doSave($con);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...