fsi / admin-positionable-bundle
FSi 管理位置包。
2.1.0
2019-08-06 12:35 UTC
Requires
- php: >=7.1
- fsi/admin-bundle: ^2.0|^3.0
- symfony/config: ^3.4|^4.0
- symfony/dependency-injection: ^3.4|^4.0
- symfony/event-dispatcher: ^3.4|^4.0
- symfony/framework-bundle: ^3.4|^4.0
- symfony/http-foundation: ^3.4|^4.0
- symfony/http-kernel: ^3.4|^4.0
- symfony/routing: ^3.4|^4.0
Requires (Dev)
- phpspec/phpspec: ^5.0
- phpspec/prophecy: ^1.7
README
此包提供了一种方法,可以通过逐渐改变列表中项的位置。这意味着位置将每次改变1。
FSiAdminPositionableBundle
与 Doctrine2 可排序行为扩展 结合使用
使用方法
添加到 AppKernel.php
new FSi\Bundle\AdminPositionableBundle\FSiAdminPositionableBundle(),
将路由添加到 /app/config/routing.yml
_fsi_positionable: resource: "@FSiAdminPositionableBundle/Resources/config/routing/positionable.xml" prefix: /admin
示例实体
注意: @Gedmo\Mapping\Annotation\SortablePosition 将列指向存储 位置 索引
use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; use FSi\Bundle\AdminPositionableBundle\Model\PositionableInterface; class Promotion implements PositionableInterface { /** * @Gedmo\SortablePosition * @ORM\Column(type="integer") */ protected $position; /** * {@inheritdoc} */ public function increasePosition() { $this->position++; } /** * {@inheritdoc} */ public function decreasePosition() { $this->position--; } }
注意: 需要实现 PositionableInterface
接口
示例数据网格定义
columns: title: type: text options: display_order: 1 label: "backend.promotions.datagrid.title.label" actions: type: action options: display_order: 2 label: "backend.promotions.datagrid.actions.label" field_mapping: [ id ] actions: move_up: route_name: "fsi_admin_positionable_decrease_position" additional_parameters: { element: "promotions" } parameters_field_mapping: { id: id } content: <span class="glyphicon glyphicon-arrow-up icon-white"></span> url_attr: { class: "btn btn-warning btn-sm" } move_down: route_name: "fsi_admin_positionable_increase_position" additional_parameters: { element: "promotions" } parameters_field_mapping: { id: id } content: <span class="glyphicon glyphicon-arrow-down icon-white"></span> url_attr: { class: "btn btn-warning btn-sm" }