如何在Sonata多对多字段中限制可用的选择?

时间:2019-02-21 16:51:00

标签: php symfony doctrine many-to-many sonata-admin

我正在使用Sonata Admin捆绑软件构建程序。我有一个ScheduleAdmin类,其中包含以下逻辑:

    $formMapper
        ->add(
            'markets',
            null,
            [
                'required' => true,
                'label'    => 'shared_countries',
                'data'     => $this->getMarketsByUser($this->getUser())
            ]
        )
    ;

进度与市场之间的关系是多对多的关系。

getMarketsByUser()方法总是返回一个市场-例如USA。我在浏览器中看到的是一个包含我的市场的字段,但是还包含一个包含其他所有国家/地区的自动填充下拉列表。

现在,我想摆脱其他自动填充选项,只允许与我的用户相关的市场。我怎么做?

1 个答案:

答案 0 :(得分:0)

那很简单。我查看了this page,然后将我的add()方法调用更改为:

    $formMapper
        ->add(
            'markets',
            null,
            [
                'required' => true,
                'label'    => 'shared_countries',
                'data'     => $this->getMarketsByUser($this->getUser()),
                'choices'     => $this->getMarketsByUser($this->getUser()),
            ]
        )
    ;

...现在工作正常。