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