如何使一个弹出选择项目使用奏鸣曲列表


How to make a popup to select an item using the Sonata lists

我最近开始了一个使用Symfony的项目,作为它的一部分,有一个Sonata(建模)后台。我喜欢Sonata制作项目列表的方式,你可以搜索/过滤或其他…问题是:

我可以重用这个列表作为一个弹出窗口,例如选择我的数据库的用户?

示例很简单:

  • 我有一个用户表在我的DB
  • 我有一个表单,您可以在一个输入中选择用户,但是,在数据库中有10.000,因此选择不是一个选项。
  • 我很想在弹出窗口中使用我的奏鸣曲项目的用户列表,当客户端单击列表的用户时,我会将其放在基本表单上。

这可能吗?有办法吗?

是的,您可以使用sonata_type_model_list作为您的字段类型。

你可以在这里看到一些例子

请注意,对于一个大型数据集,这是非常无用的,除非你添加一些过滤器,否则它只是一个巨大的分页列表。

最后,我用下面的字段创建了新的管理员:

protected $baseRouteName = 'admin_product_clean_list';
protected $baseRoutePattern = 'product-clean';

我还重写了getTemplate方法来使用我的干净的自定义布局,像这样:

public function getTemplate($name)
{
    switch ($name) {
        case 'layout':
            return 'DemoBundle:admin:onlytable_layout.html.twig';
            break;
        default:
            return parent::getTemplate($name);
            break;
    }
}

然后像这样使用url:

"{{ app.request.getBaseURL() }}/admin/product-clean/list"

不确定这是不是最好的方法,但它像一个魅力…我可以使用我的自定义布局复制的sonata的项目(vendor/sonata-project/admin-bundle/Resources/views/standard_layout.html.twig),并删除或添加任何我想要的。您也可以使用sonata empty或ajax布局。