我有一张表,其中包含属于不同类别A和B的人员列表。我的问题是我有一个带有DoctrineModule ObjectSelect的表单,我想在ObjectSelect中只显示A类人员的名字。
我找到了这个https://github.com/doctrine/DoctrineModule/blob/master/docs/form-element.md#example-3--extended-version,但这个例子对我来说并不清楚,我不知道如何让它适应我的情况。
谢谢。
请原谅我的英语。
答案 0 :(得分:2)
它实际上与您正在查看的示例非常相似(我猜这就是没有示例的原因),唯一的区别是不是使用find / findBy / ...而是将您的自定义存储库名称作为名称传递密钥,代码类似于:
$this->add(array(
'name' => 'my-select-object',
'type' => 'DoctrineModule\Form\Element\ObjectSelect',
'attributes' => array(
),
'options' => array(
'label' => 'My Label',
'object_manager' => $entityManager,
'target_class' => 'Application\Entity\MyEntity',
'property' => 'name',
'is_method' => true,
'find_method' => array(
'name' => 'myCustomRepositoryMethod',
'params' => array(
),
),
),
));
另请注意,您的实体需要了解存储库的存在,因此请确保它使用此行:
@ORM\Entity(repositoryClass="Application\Entity\Repository\MyCustomRepository")
因此,当您使用此ObjectSelect打开表单时,它将调用您的存储库方法,而不是直接加载下拉列表。该方法应该只返回一个实体对象数组,然后由ObjectSelect使用它们来生成select元素的选项。