Php 如何在Symfony中创建列表?

Php 如何在Symfony中创建列表?,php,symfony,Php,Symfony,我不熟悉Symfony框架。我想创建一个记录列表,如下所示: 我需要在顶部的一些过滤器,中间的项目列表和底部的分页。列表必须同时支持可编辑和只读模式。在只读模式下,用户可以浏览数据,而在编辑模式下,用户可以更新多个字段和列中的值 因为我将制作很多这样的列表,所以我希望在Symfony2中使用类似于界面的表单,而不是一直调整细枝模板 我是否缺少可以创建这样列表的Symfony表单的一些功能?是否有其他常见的方法来实现这一点?您能给我一些提示吗?要扩展哪些表单相关类来创建对列表的支持?为了将Sym

我不熟悉Symfony框架。我想创建一个记录列表,如下所示:

我需要在顶部的一些过滤器,中间的项目列表和底部的分页。列表必须同时支持可编辑和只读模式。在只读模式下,用户可以浏览数据,而在编辑模式下,用户可以更新多个字段和列中的值

因为我将制作很多这样的列表,所以我希望在Symfony2中使用类似于界面的表单,而不是一直调整细枝模板


我是否缺少可以创建这样列表的Symfony表单的一些功能?是否有其他常见的方法来实现这一点?您能给我一些提示吗?要扩展哪些表单相关类来创建对列表的支持?

为了将Symfony表单转换为列表,我创建了一个新的表单类型ListType,它接受任意嵌套的集合类型。这样我就可以创建包含各种列的列表。它将看起来像:

class ListType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        if (empty($options['collection_type']) || !$options['collection_type'] instanceof AbstractType) {
            throw new \InvalidArgumentException();
        }
        $builder->add('rows', 'collection', array('type' => $options['collection_type']));
        $builder->add('save', 'submit', array('label' => 'Save'));
    }
    ...
}
我将使用$options数组来提供或打开和关闭其他功能,如搜索过滤器和分页

为了有一个简单的界面来显示如下列表:

{{ list(list) }}
我创建了细枝扩展:

class ListExtension extends \Twig_Extension
{
    public function getFunctions()
    {
        return array(
            new \Twig_SimpleFunction('list', array($this, 'listFunction'), array('is_safe' => array('html'), 'needs_environment' => true))
        );
    }

    public function listFunction(\Twig_Environment $env, FormView $form)
    {
        return $env->resolveTemplate($this->defaultTemplate)->renderBlock('list', array('form' => $form));
    }
    ...
}
它呈现“列表”细枝块。我还将以相同的方式添加其他子块。此扩展提供比“表单”块更大的feedom

我将列表扩展注册为一项服务:

# app/config/services.yml
services:
    my.twig.list.extension:
        class: MyBundle\Twig\Extension\ListExtension
        arguments: ["::my_theme.html.twig"]
        public: false
        tags:
            - { name: twig.extension }
现在我只需要创建我的ListType的一个表单,并向它传递一个行实体数组


感谢您为我指明了正确的方向。

APYdataGridBundle这是一个完美的解决方案,

您在这里尝试做的事情,至少对我来说,似乎最好通过twitter引导(对于CSS位)来解决,这是一个功能强大的SF2分页器包。也就是说,我确实觉得这个问题有点离题,因为它似乎并没有真正解决与特定代码相关的问题,它更像是一个“我如何开始”类的问题(如果你需要一个关于SF2的速成课程,请查看他们网站上的Symfony cookbook,它非常好,真的)我已经看过食谱了,但它没有描述如何创建列表。我知道我可以在twig中创建它们,但我喜欢表单构建界面。由于我需要可编辑列表,这些列表可以包含表单之类的字段,所以我尝试调试表单,以确定我可以挂接到哪里。我认为应该替换PropertyPathMapper来处理数据行,但这只是一个开始。因此,我希望有一种更简单的方法来修改表单,使其像列表一样工作。使用表单作为列表并不是那么困难,当然也不需要像
PropertyPathMapper
那样深入挖掘,一个简单的细枝模板和一个嵌套的自定义表单类型都应该做到这一点,symfony cookbook涵盖了这两个方面,并在symfony2 docsmaybe use datatables.js中详细解释