2

我已经将 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 模板中的位置。我想实现一个树枝扩展,它调用我的服务并执行我在控制器和树枝中所做的所有逻辑。此外,它适用于任何文档。

我怎么能得到这个?

4

0 回答 0