newquery / symfony-entity-order
为您的实体添加一个名为 'positionOrder' 的新属性,以便您可以在排序集合中为项目指定位置
dev-main
2021-06-17 20:04 UTC
Requires
- doctrine/orm: ^2.8
- doctrine/persistence: ^2.1
- symfony/config: 5.2.*
- symfony/dependency-injection: 5.2.*
- symfony/http-kernel: 5.2.*
- symfony/string: 5.2.*
This package is auto-updated.
Last update: 2024-09-18 03:12:18 UTC
README
帮助从实体创建有序列表。
用法
将特性添加到所需的实体中
namespace App\Entity\Misc; use App\Repository\Misc\TeamMemberRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use newQuery\Bundle\EntityOrder\Lib\OrderEntity; use Symfony\Component\Validator\Constraints as Assert; /** * @ORM\Entity(repositoryClass=TeamMemberRepository::class) * @ORM\HasLifecycleCallbacks() */ class TeamMember { use OrderEntity; // THIS /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id;
请确保添加@ORM\HasLifecycleCallbacks()
享受吧,您的实体现在有了 positionOrder 属性。
创建一个动态控制器,用于增加/减少位置
/** * @Route("/increase/{className}/{id}", name="increase_position") */ public function increase(string $className, int $id, OrderPositionHelper $helper, Request $request): Response { $em = $this->getDoctrine()->getManager(); $meta = $em->getMetadataFactory()->getAllMetadata(); $repository = null; foreach ($meta as $m) { if(strpos($m->getName(), 'App\Entity') !== false && strpos($m->getName(), $className) !== false) { $repository = $em->getRepository($m->getName()); break; } } if(null !== $repository) { $result = $helper->increase($repository, $id); $this->getDoctrine()->getManager()->flush(); if(true === $result) { $this->addFlash('success', 'Ordre mis à jour!'); } } return $this->redirect($request->headers->get('referer')); }
/** * @Route("/decrease/{className}/{id}", name="decrease_position") */ public function decrease(string $className, int $id, OrderPositionHelper $helper, Request $request): Response { $em = $this->getDoctrine()->getManager(); $meta = $em->getMetadataFactory()->getAllMetadata(); $repository = null; foreach ($meta as $m) { if(strpos($m->getName(), 'App\Entity') !== false && strpos($m->getName(), $className) !== false) { $repository = $em->getRepository($m->getName()); break; } } if(null !== $repository) { $result = $helper->decrease($repository, $id); $this->getDoctrine()->getManager()->flush(); if(true === $result) { $this->addFlash('success', 'Ordre mis à jour!'); } } return $this->redirect($request->headers->get('referer')); }
在 twig 模板中
<a class="btn btn-primary" href="{{ path('decrease_position', {'id': member.id, 'className': 'TeamMember'}) }}">-</a> <a class="btn btn-primary" href="{{ path('increase_position', {'id': member.id, 'className': 'TeamMember'}) }}">+</a>
错误
您可以使用 特性 通过以下命令修复一个或所有实体的顺序: $ php bin/console nq:position-order:fix <?Entity>