Não é possível desativar o campo da entidade e manter seu valor
Em um evento de formulário, definindo um campo'attr' => array('readonly' => 'readonly')
é renderizado como"disabled" = "1"
. Este não é o efeito desejado. Um campo de seleção desativado persiste em um valor nulo no envio. Um campo somente leitura deve reter e persistir o valor exibido. Ou assim eu pensei. Então, como obter o valor para permanecer inalterado e imutável?
Editar;
Um campo oculto não funciona.choice_attr
também não ajuda.
Estou votando para encerrar esta pergunta. Não descobri nenhum método para exibir um campo de entidade desativado e também reti o valor. Se você tem alguma idéia de como isso é feito ...
Um exemplo (no Symfony 2.8.3): A entidade Doméstica possui seis atributos, cada um dos quais é uma entidade em um relacionamento OneToMany para Doméstica. (O aplicativo possui outras entidades que possuem atributos semelhantes.) A entidade / atributo Habitação da família tem duas propriedades: habitação e habilitado. O cliente do aplicativo pode definir uma propriedade paraenabled = no
se eles não pretendem mais rastrear essa propriedade.
Se uma propriedade estiver configurada comoenabled = no
sua disponibilidade em um formulário Doméstico novo ou editado é prontamente eliminada pela inclusão de uma cláusula where no construtor de consultas do campo da entidade, por exemplo,->where("h.enabled=1")
. No entanto, isso faz com que a propriedade desativada seja configurada comonull
. Daí a necessidade de reter o valor de alguma forma.
A solução ideal seria um serviço para esses campos de entidade de atributo que exibissem valores e retivessem se ativado não.
Eu tentei usar um ouvinte de evento, um campo oculto,choice_attr
, modificando o modelo de formulário e o tema do formulário sem sucesso. Por exemplo, um campo oculto é texto quando um campo de entidade é obrigatório. Isso não significa que não possa ser feito, apenas que eu não tropecei no método adequado.