Приветствую всех. Нужна помощь в следующей ситуации:
0. Задача: редактирование списка городов, закрепленных за конкретным пользователем. ( Пользователя не редактируем. )
1. Есть таблица БД Usercity на два поля user_id и city_id - за юзером может закрепляться n-нное кол-во городов ( 1:N ). Есть соответствующая Entity.
2. Есть таблица БД Cities - это справочник со всем исходным перечнем городов в системе. Есть соответствующая Entity.
3. Пишется форма через класс формы для вывода списка всего перечня городов со множественным выбором ( здесь не важно: select это будет или checkbox-ы ), в котором ( в списке ) в соответствии с city_id-ами, выбранными из Usercity для указанного user_id отмечены как selected.
Вопрос: не могу понять, как передать в класс формы данные из Usercity в формате объектов, т.к. Symfony орет - требует данные как объекты, а не строковые данные. Для иллюстрации наработки ниже:
Класс формы:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add( 'user_id' , 'hidden' )
->add('city_id', 'entity', array(
'class' => 'Acme\AppBundle\Entity\User\Cities',
'query_builder' => function ( EntityRepository $er ) {
return $er->createQueryBuilder( 'u' )
->groupBy( 'u.city_name' )
->orderBy( 'u.city_name', 'ASC' );
},
'property' => 'city_name',
'preferred_choices' => $this->getCities(),
'multiple' => true,
'label' => false,
'required' => true,
)
)
->add( 'save', 'submit', array( 'label' => 'Сохранить' ) );
}
Контроллер:
public function editCitiesAction( $user_id, Request $request )
{
$em = $this->getDoctrine()->getManager();
$cities = $em->getRepository('Acme\AppBundle\Entity\User\Usercity')->findBy( array( 'user_id' => $user_id ) );
$form = $this->createForm( new editCitiesType( ) );
...
return $this->render('AcmeAppBundle:Forms:editCities.html.twig', array( 'form' => $form->createView() ) );
}
Уточнение вопроса: как передать в класс формы $cities?
Заранее благодарен за помощь.
Спасибо.