Doctrine orm 如何将选定选项设置为ObjectSelect

Doctrine orm 如何将选定选项设置为ObjectSelect,doctrine-orm,zend-framework2,zend-form-select,Doctrine Orm,Zend Framework2,Zend Form Select,我正在使用ZF2和Doctrine2,并为Place类创建了一个表单。这个地方有一个省属性,我想将其渲染为选择字段。 当我添加新位置时,一切正常,但是当我尝试编辑一个位置时,我不知道如何在选择字段中将“selected”属性设置为正确的选项。 在编辑屏幕中,我得到以下代码: ... <select name="lugar[localidad][provincia][select]"> <option value="">Seleccione provincia...

我正在使用ZF2和Doctrine2,并为Place类创建了一个表单。这个地方有一个省属性,我想将其渲染为选择字段。 当我添加新位置时,一切正常,但是当我尝试编辑一个位置时,我不知道如何在选择字段中将“selected”属性设置为正确的选项。 在编辑屏幕中,我得到以下代码:

...
<select name="lugar[localidad][provincia][select]">
    <option value="">Seleccione provincia...</option>
    <option value="1">Capital Federal</option>
    <option value="2">Buenos Aires</option>
</select>
...
这是上一个字段集包含在其父字段集中的位置:

$localidadFieldSet = new LocalidadFieldSet($objectManager);
$this->add($localidadFieldSet);
如果我的实体具有以下属性: $id $name


我知道它对应的字段集应该只有一个Select元素,当一个对象被绑定时,它应该将适当的选项设置为“selected”。我说得对吗?

我把Select元素的名称搞错了。我把它从“选择”改为“id”,现在它正确地设置了值。

你能用对象选择发布你的表单代码吗?这应该在你执行
$form->bind($object)
后自动发生。这是假设所有的
hydrators
都已正确设置,并且
objectfieldset
的命名约定已正确完成。话虽如此,请按照@cptnk的要求进行操作。我添加了一些代码,希望能有所帮助
class LocalidadFieldSet extends Fieldset /*implements InputFilterAwareInterface*/
{

    public function __construct(ObjectManager $objectManager)
    {
        parent::__construct('localidad');

        $this->setHydrator(new DoctrineObject($objectManager))->setObject(new Localidad());

        $provinciaFieldSet = new ProvinciaFieldSet($objectManager);
        $this->add($provinciaFieldSet);

        $this->add(array(
            'name' => 'select',
            'type' => 'DoctrineModule\Form\Element\ObjectSelect',
            'options' => array(
                'object_manager' => $objectManager,
                'target_class' => 'Application\Entity\Localidad',
                'property' => 'nombre',
                'label' => 'Localidad',
                'empty_option' => 'Seleccione localidad...'
            )
        ));
    }
}
$localidadFieldSet = new LocalidadFieldSet($objectManager);
$this->add($localidadFieldSet);