![]() |
|
csDoctrineActAsSortablePlugin - 1.0.3A plugin that adds sorting functions to model |
|
The csDoctrineActAsSortablePlugin is a symfony plugin that allows use of the doctrine behavior actAsSortable.
This behavior provides methods on your model for setting display order/position.
This plugin also contains images to implement for ordering.
Install the plugin
$ symfony plugin:install csDoctrineActAsSortablePlugin
Apply the behavior to your model in your schema file config/doctrine/schema.yml, ie:
model: actAs: [Sortable]
Optionally accepts a UniqueBy attribute which will be used on a model with a one-to-many relationship
model:
actAs: [Sortable]
uniqueBy: [parent_id]
Rebuild your models and database
$ symfony doctrine:build-all-reload
alternatively you could build the models, the sql, then run the sql manually
Publish your assets
$ symfony plugin:publish-assets
Clear your cache
$ symfony cc
promote
$record->promote();
demote
$record->demote();
moveToFirst
$record->moveToFirst();
moveToLast
$record->moveToLast();
moveToPosition
$record->moveToPosition($newPosition);
sort - accepts the array created by the symfony/prototype sortableElement tag
Doctrine::getTable('Model')->sort($order);
findAllSorted - Accepts sort order (asc, desc)
Doctrine::getTable('Model')->findAllSorted('ASCENDING');
findAllSortedWithParent - accepts the parent column name, the value, and sort order (asc, desc)
Doctrine::getTable('Model')->findAllSortedWithParent($fk_value, $fk_name, 'ASCENDING');
In your module, edit config/generator.yml, and under list, object actions, add:
object_actions:
promote:
action: promote
demote:
action: demote
_edit: -
_delete: -In your module, edit ``, Add the following actions:
public function executePromote() { $object=Doctrine::getTable('MyModel')->findOneById($this->getRequestParameter('id')); $object->promote(); $this->redirect("@moduleIndexRoute"); } public function executeDemote() { $object=Doctrine::getTable('MyModel')->findOneById($this->getRequestParameter('id')); $object->demote(); $this->redirect("@moduleIndexRoute"); }