Форма с двумя классами и отношения - PullRequest
1 голос
/ 25 июня 2011

У меня есть в Доктрине 1.2:

User:
  columns:
    login:        { type: string(255), notnull: true }
    password:     { type: string(255), notnull: true }

Student:
  columns:
    user_id:         { type: integer, notnull: true }
    school_name:     { type: string(255) }
    school_year:     { type: integer(4) }
  relations:
    User:  { onDelete: CASCADE, local: user_id, foreign: id }

Teacher:
  columns:
    user_id:   { type: integer, notnull: true }
    city:      { type: string(255) }
    street:    { type: string(255) }
  relations:
    User:  { onDelete: CASCADE, local: user_id, foreign: id }

если я открою localhost / user / new в форме:

login:
password:

это хорошо.

если я открою localhost / student / new в форме:

user_id
school_name:
school_year:

но я бы хотел:

login:
password:
school_name:
school_year:

как это сделать?спасибо за помощь!

1 Ответ

1 голос
/ 26 июня 2011

Вы должны использовать метод sfForm с именем embedRelation . Вы должны создать новую форму, расширяющую userForm и установить (в методе configure) отношение встраивания со студентом.

Например:

class UserStudentForm extends UserForm
{
  public function configure()
  {
    // Existing Student forms
    $this->embedRelation('Student');

    $this->widgetSchema->setNameFormat('user_student[%s]');
  }
}

Отметьте в этом примере , который прекрасно объясняет, как его использовать.

...