Php 如何使用索纳塔列表弹出选择项目

Php 如何使用索纳塔列表弹出选择项目,php,html,symfony,popup,sonata,Php,Html,Symfony,Popup,Sonata,我最近开始了一个使用Symfony的项目,作为其中的一部分,有一个Sonata(建模)后台办公室。我喜欢索纳塔制作物品列表的方式,在那里你可以搜索/过滤或观看。。因此,问题是: 我是否可以将此列表重新用作弹出窗口,例如选择我的数据库的用户? 这个例子很简单: 我的数据库中有一个用户表 我有一个表单,您可以在一个输入中选择一个用户,但数据库中有10.000,因此选择不是一个选项 我希望在弹出窗口中使用我的sonata项目的用户列表,当客户单击列表的用户时,我会将其放在基本表单上 可能吗?有办法

我最近开始了一个使用Symfony的项目,作为其中的一部分,有一个Sonata(建模)后台办公室。我喜欢索纳塔制作物品列表的方式,在那里你可以搜索/过滤或观看。。因此,问题是:

我是否可以将此列表重新用作弹出窗口,例如选择我的数据库的用户?

这个例子很简单:

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

可能吗?有办法吗?

是的,您可以使用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;
    }
}
"{{ app.request.getBaseURL() }}/admin/product-clean/list"
然后将其与URL一起使用,如下所示:

public function getTemplate($name)
{
    switch ($name) {
        case 'layout':
            return 'DemoBundle:admin:onlytable_layout.html.twig';
            break;
        default:
            return parent::getTemplate($name);
            break;
    }
}
"{{ app.request.getBaseURL() }}/admin/product-clean/list"

不确定这是不是最好的方法,但它很有魅力。。我可以使用索纳塔项目的自定义布局副本(vendor/sonata project/admin bundle/Resources/views/standard_layout.html.twig)删除或添加我想要的任何内容。您也可以使用sonata empty或ajax布局。

我的观点是在sonata之外使用它,称之为rhought URL,但感谢您的尝试,您的回答在其他问题上对我有帮助;)