заполнить пользовательскую форму объектом

#php #symfony1 #symfony-forms

#php #symfony1 #symfony-forms

Вопрос:

у меня есть простая форма: UserInfoForm() . когда я впервые показываю форму пользователю, я хочу, чтобы она была заполнена данными из определенного объекта User модели. кто-нибудь может дать мне направление или пример? Спасибо!

Комментарии:

1. Что расширяют классы UserInfoForm и User?

2. UserInfoForm расширяет sfForm, а User — это модель doctrine. я ищу решение, подобное тому, которое дал мне Том, но я получаю сообщение об ошибке (прочитайте мой комментарий к его сообщению). Спасибо!

Ответ №1:

Обычно вы делаете это следующим образом, но это зависит от того, как ваша UserInfoForm связана с объектом User:

 $user = Doctrine::getTable('User')->findOneById($user_id);
$this->form = new UserInfoForm($user);
  

Редактировать: Я предполагаю, что вы используете Doctrine.

Комментарии:

1. я попробовал это, но затем я получаю: Неизвестное свойство записи / связанный компонент «_csrf_token» в «User». похоже, что он ищет столбец _csrf_token в User. как мне «сообщить» форме, что поле csrf не является столбцом в User?

2. Хм … это странно, этого не должно было происходить. Вы отображаете токен в шаблоне только с помощью «<?php echo $form[‘_csrf_token’]-> render() ?>» или вы делаете с ним что-то еще?

3. Если проблема не устранена, возможно, вы могли бы попробовать объявить соответствующие поля в классе form: «$this->useFields(array(‘field1’, ‘field2’, ‘field3’));»

4. … а также, судя по приведенному выше комментарию, который вы сделали, вам необходимо убедиться, что «класс UserInfoForm расширяет BaseUserForm» в объявлении класса вашей формы.

5. я не хочу, чтобы UserInfoForm расширял BaseUserForm, потому что я хочу создать класс form с нуля, а не перегружать BaseUserForm .. кроме того, я получаю ошибку из части действия, а не из шаблона. я даже не отображаю форму в шаблоне, и я все еще получаю ошибку .. это потому, что UserInfoForm расширяет sfForm, а не BaseUserForm?