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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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