我已经将 Symfony1 Cookbook http://symfony.com/legacy/doc/cookbook/1_2/en/sortable的这个条目重写为 Symfony2。我的第一个目标是经典的可排序列表:
所有文档(MongoDB)都有一个整数类型的位置字段,它们将显示的顺序。
我创建了一个服务类 Sortable,其中有以下方法:
class Sortable
{
//Return the position of the document
public function getByPosition($position = 1, $document, $site, $item = null){ /**/ }
//Return all elements sorted by position
public function getAllByPosition($document, $site){/**/}
//Return the max position of the items within a parent item
public function getMaxPosition($document, $site, $parent = null){/**/}
//Swap the position between $itemOne and $itemTwo
public function swapWith($itemOne, $itemTwo, $document){/**/}
//Set the new position => +1
public function executeUp($document, $id){/**/}
//Set the new position => -1
public function executeDown($document, $id){/**/}
//Persist document with the new position
public function save($item, $document){/**/}
}
这很好用,但主要问题是这个类很难重用。
-$document var 是数据库中 Document 的名称,例如在createQueryBuilder('MyBundle'.$document)上使用
-$site var 是我的应用程序的站点,因为每个用户都有一个站点。
-$parent var 是 $document 类型,它是相同类型文档的父级。
对我来说问题是,这很难重用,我必须在控制器操作中调用上面的所有方法,然后检查 Twig 模板中的位置。我想实现一个树枝扩展,它调用我的服务并执行我在控制器和树枝中所做的所有逻辑。此外,它适用于任何文档。
我怎么能得到这个?