【问题标题】:How to make a popup to select an item using the Sonata lists如何使用奏鸣曲列表制作弹出窗口以选择项目
【发布时间】:2015-09-21 16:34:18
【问题描述】:

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

我可以重复使用此列表作为弹出窗口来选择我的数据库的用户吗?

例子很简单:

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

这可能吗?有办法吗?

【问题讨论】:

    标签: php html symfony popup sonata


    【解决方案1】:

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

    你可以看到它的一些例子here

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

    【讨论】:

    • 我的意思是在奏鸣曲之外将其称为 URL 但感谢您的尝试,您的回答在其他问题上对我有帮助;)
    【解决方案2】:

    最后我用这个字段创建了新的管理员:

    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"
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2017-11-12
      相关资源
      最近更新 更多