zenfra 0 Denunciar post Postado Novembro 10, 2009 Bom dia, Me deparei com a seguinte necessidade, tenho que montar um formulário na view para a ação "add" que adiciona novos usuários e também onde devo definir algumas permissão de acesso para esse usuário. Imagine que essas permissões são listadas na mesma tela de cadastro do usuário na forma de checkbox e elas deve ser dinâmicas, pois estão cadastradas na base de dados e podem ser alteradas adicionando ou removendo. Então eu tenho três tabelas na base de dados envolvidas, "Usuarios","UsuariosXPermissoes" e "Permissoes".. Pergunto.. 1 - Como fazer para que a exibição dessas checkbox representando as permissões apareçam de forma dinâmica na view add ? 2 - Como salvar as permissões selecionadas relacionando o usuário com as permissões na tabela "UsuariosXPermissoes" ? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Sérgio Macedo 0 Denunciar post Postado Novembro 10, 2009 Olá, A sugestão que eu te dou é você trabalhar com relacionamento HasAndBelongsToMany, vai o link onde você encontra maiores explicações: http://book.cakephp.org/pt/view/83/hasAndBelongsToMany-HABTM E a maior graça do cakephp é com uma simples linha você altera um campo "select options multiple" para "checkbox multiple": http://book.cakephp.org/pt/view/193/options-multiple echo $form->input('Grupo.id', array('type'=>'hidden', 'value' => $grupo_id)); echo $form->input('Usuario', array( 'label' => 'USUÁRIOS que pertence ao Grupo.' //Descomente esta linha abaixo p/ transformar o campo select em checkbox com mulplica seleção. //, 'multiple' => 'checkbox' ) ); Compartilhar este post Link para o post Compartilhar em outros sites
zenfra 0 Denunciar post Postado Novembro 12, 2009 Boa noite, Caras a saindo, vou colocar meu código.. Bom minha estrutura é a seguinte no banco Usuarios, UsuariosEstruturas e Estruturas.. É um relacionamento de muitos para muitos... Então no formulário de cadastro de usuários preciso exibir depois dos campos relacionados ao cadastro de usuários uma listagem de Estruturas que o usuário pode ou não acessar. O cara que estiver cadastrando o novo usuário vai poder ticar nos checkbox para definir as estruturas que esse usuário vai possuir e essas serão salvas na tabela UsuariosEstruturas. Para seguir os passo, gostaria primeiramente montar o formulário, hoje a view add do Usuários funciona, preciso adicionar a lista de checkbox de permissões para seleção. Depois ver como posso salvar as selecionadas na tabela UsuariosEstruturas. Valeus Meus controles hoje estão assim: A Controller do Usuarios <?php class UsuariosController extends AppController{ var $name = 'Usuarios'; var $helpers = array( 'Html' , 'Form' , 'Javascript' , 'Ajax' ); var $components = array( 'RequestHandler' ); var $uses = array( 'Usuario', 'Estrutura' ); function index(){ $this->layout = 'Usuario'; $this->set( 'Usuarios' , $this->Usuario->find('all')); } function add(){ $this->set( 'Estrutura', $this->Estrutura->Tag->find('list') ); $this->layout = 'Usuario'; if( $this->Usuario->save( $this->data ) ){ $this->Session->setFlash( 'Seus dados foram salvos com sucesso!' ); //$this->redirect( array( 'action' => 'index' ) ); } } } A Controller da Estrutura <?php class EstruturasController extends AppController{ var $name = 'Estruturas'; var $helpers = array('Javascript'); function index(){ $this->set( 'Estruturas' , $this->Estrutura->find('all')); } function add(){ if( $this->Estrutura->save( $this->data ) ){ $this->Session->setFlash( 'Seus dados foram salvos com sucesso!' ); $this->redirect( array( 'action' => 'index' ) ); } } } ?> A View de cadastro do usuário <?php print $javascript->link( 'jquery' , false ); print $javascript->link( 'jquery.maskedinput-1.2.2' , false ); print $javascript->link( 'prototype' ); print $javascript->link( 'scriptaculous' ); print $javascript->link( 'modal' ); print $javascript->codeBlock('jQuery(function($){ $("#UsuarioDtNascimento").mask("99/99/9999"); });', null); print $ajax->form( 'add' , 'post' , array( 'model'=>'Usuario' ) ); print $form->input( 'id_cadastro' , array( 'type' => 'hidden' ) ); print $form->input( 'dt_cadastro' , array( 'type' => 'hidden' , 'value' => date( "Y-m-d G:i:s" ) ) ); print $form->input( 'id_atualizacao' , array( 'type' => 'hidden' ) ); print $form->input( 'dt_atualizacao' , array( 'type' => 'hidden' , 'value' => date( "Y-m-d G:i:s" ) ) ); print $form->input( 'id_cancelados' , array( 'type' => 'hidden' , 'value' => '' )); print $form->input( 'ds_nome' , array( 'type' => 'text', 'label' => 'Nome ' , 'size' => 50 , 'class' => 'classInput' ) ); print $form->input( 'ds_sobrenome' , array( 'type' => 'text' , 'label' => 'Sobrenome ' , 'size' => 50 , 'class' => 'classInput' ) ); print $form->input( 'dt_nascimento' , array( 'type' => 'text' , 'label' => 'Nascimento ' , 'size' => 20 , 'class' => 'classInput' ) ); print $form->input( 'ds_email' , array( 'type' => 'text' , 'label' => 'Email ' , 'size' => 50 , 'class' => 'classInput' ) ); print $form->input( 'ds_password' , array( 'type' => 'password' , 'label' => 'Senha ' , 'size' => 20 , 'class' => 'classInput' ) ); print $form->input( 'bt_ativo' , array( 'type' => 'select' , 'label' => 'Status ', 'options' => array( 'S' => 'Ativo' , 'N' => 'Inativo' ) )); print $form->end( 'Salvar' ); print $html->link( 'Voltar' , array( 'action' => 'index' ) ); ?> Compartilhar este post Link para o post Compartilhar em outros sites