Daniel, eu também senti dúvidas em relação a validação do DataMapper.
O que eu decidi fazer é manter a validação no controller e não no model do DataMapper. Assim ó: http://d.pr/NhyA As views ficam normais mesmo, com o input value="<?php echo set_value('campo'); ?>" na adição e <?php echo set_value('campo', $cliente->campo); ?> na edição Eu venho pensando em colocar a validação no model, porém teria que, dentro do mesmo, carregar a library form_validation. Não sei se é uma boa prática. Mesmo assim, desta forma, manteria o controller bem mais enxuto, só com os métodos de adicionar e editar. A lógica mesmo estaria no model. Ainda ando a pensar no assunto. Já no teu caso, terás de fazer o seguinte (no meu entendimento). Busque o tipo de telefone desejado (na tabela tipostelefone). Depois crie um objeto referente a tabela telefonesclientes. Este objeto trabalharia assim: $telefonesclientes->telefone = $this->input->post('telefone'); $telefonesclientes->tipotelefone_id = A primeira busca an tabela tipostelefones $telefonesclienes->cliente_id = O cliente já guardado no bd. Há uma forma de automatizar isso usando o próprio save do DataMapper, passando como parâmetro o objeto cliente. Mas é melhor dar uma lida para ver se encaixa na tua situação. Eu mesmo me perco com isso :'( http://datamapper.wanwizard.eu/pages/save.html#Relationship Se conseguires uma forma mais prática, avise-me. Eu ando a penar com um sistema de reserva de viagens de avião. Eu tenho o pacote e dentro do pacote eu posso ter vários locais de partida. Por exemplo: Um pacote que vai pro Rio de Janeiro pode partir de Lisboa ou do Porto. O cliente na hora da reserva vai escolher o local de partida. Resolvi, mas tive que fazer gambetas, com o velho $this->db->where('..... Olha, o criador do DataMapper está sempre no canal do codeigniter no IRC. Já me ajudou algumas vezes. []'s Em 2011/04/15, às 03:24, Daniel Medina escreveu: > então. to com o seguinte problema: estou jogando minhas regras de validação > do form_validation pro validation do DataMapper. > > Motivo: quando havia erro de validação, a maneira mais fácil de eu preencher > novamente o formulário com os dados passados eu tinha que criar um array > com os campos. Para preencher os dados pra edição, eu utilizava um array da > mesma estrutura utilizada para voltar os dados da validação. Logo, eu tenho > um array único para as duas coisas. > > Isso tava me incomodando. Tava me sentindo com se estivesse reescrevendo > código esse array. Então achei boa idéia jogar tudo pro validation do > DataMapper. > > taí a pergunta 1: É boa ideia? > > eu tenho esse modelo > http://d.pr/He4T > > eu salvo um cliente, salvo seu usuário. Mas eu tenho "N" telefones e um tipo > de telefone associado a cada telefone. > > Na hora de validar, eu só tenho que me preocupar com com UM cliente, UM > usuário e VÁRIOS telefones. O problema é: em caso de erro do segundo > telefone de 3 telefones, como vou fazer para retornar as instâncias todas já > setadas para o formulário evitando que o usuário não precise preencher tudo > novamente? E como vou fazer rollback de tudo se eu so posso fazer um > rollback por instância? > > Alguém tem uma solução cabível? > > Abraços! > > -- > Daniel Medina > _______________________________________________ > [email protected] > http://www.codeigniter.com.br > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > > --------------------------- > Oportunidade de negócio > http://www.franquiasargohost.net > --------------------------- _______________________________________________ [email protected] http://www.codeigniter.com.br http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br --------------------------- Oportunidade de negócio http://www.franquiasargohost.net ---------------------------

