Рендеринг и обновление формы Symfony со связанными записями? - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть две таблицы.Я рендеринг полей двух таблиц (user и user_education).Один пользователь может иметь несколько записей (сведения об образовании).Чтобы редактировать информацию о пользователе, я могу получить только одну запись с конкретными сведениями user_education.Как получить несколько записей таблицы user_education для конкретного пользователя?Я отображаю поля из обеих таблиц на одной странице с именем editSuccess().

Я создал объект обеих форм, как показано ниже

foreach ($user->getUserEducations() as $edu)
{
     $education =  $edu;
     break;
}


$this->form = new stFormProfile($user);
$this->form1 = new UserEducationForm($education);

В приведенном выше коде $education isодна запись user_education.Я должен передать массив user_education объектов ($user->getUserEducations()).Но он не примет массив объектов.

Я связываю значения, как показано ниже,

$this->form1->bind($request->getParameter('user_education'),
$request->getFiles('user_education'));
$this->form->bind($request->getParameter('profile'), $request->getFiles('profile'));

Я сохраняю обновленные значения, используя приведенный ниже код,

$this->form->save();
$this->form1->save();

Поля таблицы пользователя получаютобновлено.Но не для user_education таблицы.Я получаю _csrf_token [Обязательное.] ошибка.

И UserEducationForm.class.php создается самой Symfony с использованием схемы базы данных, которую я дал изначально.В этой схеме я не указал никаких первичных ключей для таблицы user_education.Поэтому Symfony сам создал столбец с именем id с первичным ключом.Это как-то влияет?

Я отображаю эти поля, как показано ниже

print $form["username"]->renderLabel()
print $form["username"]->render() 
print $form["email"]->renderLabel() 
print $form["email"]->render() 
print $form["firstname"]->renderLabel() 
print $form["firstname"]->render() 
print $form["lastname"]->renderLabel() 
print $form["lastname"]->render() 
print $form['skillset']->renderLabel() 
print $form['skillset']->render() 
print $form['years_of_experience']->renderLabel() 
print $form['years_of_experience']->render() 

Сведения об образовании

print $form1['college_name']->renderLabel() 
print $form1['college_name']->render() 
print $form1['coursename']->renderLabel() 
print $form1['coursename']->render() 
print $form1['percentage']->renderLabel()  

Мне нужно отобразить несколько строк таблицы сведений об образовании (используя foreach).

1 Ответ

1 голос
/ 20 апреля 2011

Вам необходимо отобразить поле _csrf_token также

print $form['_csrf_token'] 

print $form1['_csrf_token'] 
...