Symfony 3: как изменить порядок коллекции массивов с помощью действия маршрута?Php

Кемеровские программисты php общаются здесь
Anonymous
Symfony 3: как изменить порядок коллекции массивов с помощью действия маршрута?

Сообщение Anonymous »

У меня есть сущность Product. Каждый продукт может иметь 0 или N изображений.
У меня есть сущность ProductPhoto, у которой есть свойство order (0 = первое).

На странице я перечисляю все изображения моего текущего продукта. Я хотел бы управлять порядком изображений с помощью двух стрелок вверх/вниз.

Когда пользователь нажимает на стрелку, изображение перемещается вверх/вниз по сравнению с другими.< /p>

Изображение


Итак, на каждой стрелке есть ссылка, соответствующая действию маршрута в моем ProductController.

Это не очень сложно обновить только порядок перемещенного изображения, но я не знаю, как обновить порядок других изображений в ArrayCollection...

Код: Выделить всё

/**
* Manage picture order
*
* @Route("/products/{id}/photos/{idphoto}/move-{direction}", name="prod_move_photo")
*/
public function movePhotoAction($id, $idphoto, $direction, Request $request) {
$em     = $this->getDoctrine()->getManager();
$photo  = $em->getRepository('AppBundle:ProductPhoto')->find($idphoto);

if ($direction == 'up') {
$order = $photo->getOrder() - 1;

if ($order >= 0)
$photo->setOrder($order);
else
$photo->setOrder(0);

} elseif ($direction == 'down') {
$order = $photo->getOrder() + 1;
$photo->setOrder($order);

} else {
throw $this->createNotFoundException("The type of ordering '" . $direction . "' doesn't exist.");
}

$em->flush();

// redirection
return $this->redirectToRoute('prod_photos', array('id' => $id));
}
Может быть, использовать PHP uksort() ?

Подробнее здесь: https://stackoverflow.com/questions/490 ... ute-action

Вернуться в «Php»