Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

zenfra

cakePHP - Formulário Dinâmico

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.