GO
Campo somente Leitura
Fechado
Olá amigos, bom dia!
Estou engatinhando no Framework e estou com uma dúvida com relação a campos de apresentação e que sejam somente de leitura.
Exemplo: Tenho um formulário de cadastro de contas a receber e contas a pagar onde uso o TDBSeekButton para trazer as informações de Cliente/Favorecido Plano de contas e Centro de custo, até ai tudo certinho, porém ao gravar o registro os campos de informação não aparecem, creio que tenha que fazer alguma rotina na Classe Modelo.
Vou postar as duas classes e uma imagem do formulário para um melhor entendimento.
Estou engatinhando no Framework e estou com uma dúvida com relação a campos de apresentação e que sejam somente de leitura.
Exemplo: Tenho um formulário de cadastro de contas a receber e contas a pagar onde uso o TDBSeekButton para trazer as informações de Cliente/Favorecido Plano de contas e Centro de custo, até ai tudo certinho, porém ao gravar o registro os campos de informação não aparecem, creio que tenha que fazer alguma rotina na Classe Modelo.
Vou postar as duas classes e uma imagem do formulário para um melhor entendimento.
Estou tendo o mesmo problema.
Esse componente retorna no um array com o valor do indice = id selecionado e value do array é a label.
até ai, pra salvar eu consegui, o problema foi na hora do exibir um campo no form.
Quando chama o metodo onEdit, esse componente vai esperar o array da mesma maneira.
É simples os campos somente leitura não estão na sua classe Lançamento então quando vc salva o Framework devolve pelo sendo data faltando esses campos para corrigir altere a linha onSave de ... ->getData(); tirando o Lançamento assim retornará. Todos os objetos do foram
Da mesma no onEdit antes de.sendData vc coloca usa o getcontato para buscar a informação e preencher o form
Eita corretor ortográfico do celular hauahia onde é foram é form e sendo data é setData.
Os campos/variaveis: $Razao_Socia, $conta, $centro_custo, estão faltando em: $this->form->setFields
Deve ser por isso.
Ops, vou olhar aqui Leandro.
Te agradeço!
É que esses campos não são persistidos Leandro, eles dever ser colocados ali da mesma forma?
Não é isso, coloquei e deu erro.
Te agradeço pela atenção e vou continuar insistindo aqui.
Valeu!
Pelo q sei todos os campos tem que ficar no setFields.
Passa o erro que deu, depois de ter colocado, talvez ajude a descobrir.
Olá Leandro, boa tarde!
Além de colocar os campos no setFields precisei também criar o método Get para cada um deles na classe que faz a associação, veja o exemplo de um deles:
Agora ao clicar no botão gravar os campos recebem o valor da classe, porém quando clico na grid para selecionar o registro que quero editar os campos são trazidos em branco, tem idéia de como posso resolver?
Na classe contato existe o atributo Razao_Social ?
Sim, existe!
Com letras maiusculas no inicio ?
Sim, veja você mesmo:
Troque
$object = $this->form->getData('Lancamento');
Por
$object = $this->form->getData();
Olá Felipe, boa noite!
Já fiz o que você me aconselhou cara mas não funciona, quando clico na grid de listagem para editar um registro esses campos que gostaria de visualizar continuam chegando vazios. :/
Classe LancamentoForm
</your>
Isso que te passei é para colocar no onSave no onEdit vc precisa colocar seu campo = seumodel->getvariavel();
Antes do setData OK Abraços...
Bom dia Felipe!
Seria esse código abaixo?
Isso mesmo porém a variável tem que estar como objeto StdClass
$Razao_Social = new StdClass;
$descricao_centro_custo = new StdClass;
$Razao_Social = $object->get_contato_Razao_Social;
$descricao_centro_custo= $object->get_centro_custo_centro_custo;
Boa sorte !
Olá Felipe, bom dia!
Resolvi o problema em alimentar as variáveis porém elas não fazem parte do objeto que alimenta o form e creio que por isso elas não aparecem no mesmo.
Essa é uma maneira de tratar o problema?
Segui o exemplo da página 65 do livro do framework;
Resolvi dessa forma:
Esqueci de colocar o valor dentro do $object que vai no setData tenta assim :
$object->Razao_Social = $object->contato->Razao_Social;
$this->form->setData($object); // fill the form
Perfeito Felipe!
Te agradeço muito pela atenção!
Um forte abraço!
Solução para o problema!
People,
Nesse exemplo (www.adianti.com.br/framework_files/tutor/index.php?class=CustomerFor) foi necessário trazer o nome da cidade (city_name). Basta que a classe de clientes tenha o método get_city_name(). O método é executado indiretamente no momento de preencher o formulário.
Abs,