заказ из collectionType в symfony2 - PullRequest
       6

заказ из collectionType в symfony2

3 голосов
/ 21 октября 2011

Я новичок в symfony2 и просто пытаюсь понять, как работает фреймворк.У меня есть следующие отношения:

1 palette(Palette entity) contains exactly 256 plumes(LogicalPlume entity) 
( which refers to a color(PhysicalPlume entity) ).
PS: the ID of the row in db is set as auto-increment, 
but the index of logicalPlume and physicalPlume is set manually (0->255).

Я установил отношения в своих сущностях как oneToMany и ManyToOne.Я создал PaletteType как CollectionType:

$builder->add('logicalPlumes', 'collection', array(
  'type' => new LogicalPlumeType($profile_id),
  'label' => 'plumes'
));

и LogicalPlumeType

$profile_id = $this->profile_id;

$builder->add('physicalPlume', 'entity', array(
  'class' => 'DessinPlumeBundle:PhysicalPlume',
  'query_builder' => function(EntityRepository $er)  use ($profile_id) {
     return $er->createQueryBuilder('pp')
                            ->where("pp.profile = :profile")
                          ->orderBy('pp.index', 'ASC')
                     ->setParameter('profile', $profile_id);
   }
));

Все отлично, объект палитры правильно сохраняется в базе данных (за исключением того, что объекты не сохраняются в своих правильных индексах).

Firebug сообщает мне, что метка выбора рядом с «0» имеет идентификатор «palette_0».но я думаю, что на самом деле это указывает на другой индекс в базе данных, не так ли?!

Итак, когда я читаю объект, я хочу, чтобы шлейфы возвращались INDEX, чтобы я мог правильно их отобразить.1018 * Например:

I saved 
logicalPlume1 = 10;
logicalPlume2 = 0;   with '0' being the default value.
logicalPlume3 = 9;
logicalPlume4 = 0;
logicalPlume5 = 5;

when i read it back, it shows:
logicalPlume1 = 10;
logicalPlume2 = 5;
logicalPlume3 = 9;
logicalPlume4 = 0;
logicalPlume5 = 0;
pushing all the '0' values to the bottom

Я думаю, что я должен использовать это CollectionType здесь, но у меня есть приказ сохранить.Как мне это сделать?

Нужно ли мне использовать другой тип, может быть ??

спасибо.

1 Ответ

0 голосов
/ 16 апреля 2013

Не видя код вашего контроллера, я бы сказал, что ваше каскадное постоянство не обрабатывается в том же порядке, что и значения не по умолчанию, которые вы выбираете для своей формы.

Попробуйте сохранить каждый шлейф через foreach или карту и посмотрите, что это за индексы.

Пожалуйста, отправьте код контроллера, если вам все еще нужна помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...