fsi/admin-positionable-bundle

FSi 管理位置包。

2.1.0 2019-08-06 12:35 UTC

This package is auto-updated.

Last update: 2024-09-10 18:34:00 UTC


README

此包提供了一种方法,可以通过逐渐改变列表中项的位置。这意味着位置将每次改变1。

FSiAdminPositionableBundleDoctrine2 可排序行为扩展 结合使用

使用方法

添加到 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" }