Skip to content
Offers a sortable feature for your Symfony2 admin listing
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Controller
DependencyInjection service is not public Feb 25, 2018
Resources Refactor: cleanup init, fix selectors and add events Nov 2, 2017
Services Merge pull request #74 from baurelien/master Mar 26, 2018
Twig
.gitignore
CHANGELOG.md
LICENSE - add gitignore Aug 26, 2014
PixSortableBehaviorBundle.php - add gitignore Aug 26, 2014
README.md
composer.json Update composer.json Apr 7, 2015

README.md

pixSortableBehaviorBundle

Offers a sortable feature for your Symfony2 admin listing

SonataAdminBundle implementation

The SonataAdminBundle provides a cookbook article here :

https://github.com/sonata-project/SonataAdminBundle/blob/3.x/docs/cookbook/recipe_sortable_listing.rst

Configuration

By default, this extension works with Doctrine ORM, but you can choose to use Doctrine MongoDB by defining the driver configuration :

# app/config/config.yml
pix_sortable_behavior:
    db_driver: mongodb # default value : orm
    position_field:
        default: sort #default value : position
        entities:
            AppBundle\Entity\Foobar: order
            AppBundle\Entity\Baz: rang
    sortable_groups:
        entities:
            AppBundle\Entity\Baz: [ group ]
            

Use a draggable list instead of up/down buttons

In order to use a draggable list instead of up/down buttons, change the template in the move action to PixSortableBehaviorBundle:Default:_sort_drag_drop.html.twig.

<?php

    // ClientAdmin.php
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('name')
            ->add('enabled')
            ->add('_action', null, array(
                'actions' => array(
                    'move' => array(
                        'template' => 'AppBundle:Admin:_sort_drag_drop.html.twig',
                        'enable_top_bottom_buttons' => true, //optional
                    ),
                ),
            ))
        ;
    }

Also include the JavaScript needed for this to work, in your theme.yml file, add these two lines:

    //...
    javascripts:
        - bundles/pixsortablebehavior/js/jquery-ui.min.js // if you haven't got jQuery UI yet.
        - bundles/pixsortablebehavior/js/init.js

Adding the JavaScript and the template, will give you the possibility to drag items in a tablelist. In case you need it, this plugin fires to jQuery events when dragging is done on the $(document) element, so if you want to add custom notification, that is possible. Also, when dragging the <body> gets an is-dragging class. This class is removed when you stop dragging. This could by quite handy if you have some custom js/css.

pixSortableBehaviorBundle.success
pixSortableBehaviorBundle.error

Disable top and bottom buttons

<?php

    // ClientAdmin.php
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('name')
            ->add('enabled')
            ->add('_action', null, array(
                'actions' => array(
                    'move' => array(
                        'template' => 'PixSortableBehaviorBundle:Default:_sort_drag_drop.html.twig',
                        'enable_top_bottom_buttons' => true,
                    ),
                ),
            ))
        ;
    }
You can’t perform that action at this time.