--
--
CakePHP Tuga (cakephp-pt)
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque subscreveu ao grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para cakephp-pt+...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para cakep...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt.
Para mais opções, visite https://groups.google.com/d/optout.
Saul, vou te mostrar o exemplo sem o jaavascript, vou escrever utilizando jquery:
/*primeiro vamos ter uma funcao no arquivo .js, pois com a funcao vc pode reescrever o codigo em outro local*/
function atualizaSelect(){
Var campo1=$('#iddoselect1').val();
var campo2 = $('#iddoselect2').val();
//funcao ajax
$.ajax({
url:www.meusite.com.br/meucontroler/minhaacao
// o controller e a action serao os que procuram os dados
dataType:'json',
type: 'post',
data{select1:campo1,select2:campo2},
//aqui no data, abrimos chaves por estArmos enviando arquivos co.o json e indicamos por qual indice iremos encontrar estes dados, no caso select1 e select2
complete:function(dados){
///aqui e pra qnd a funcao terminar, vc vai executar uma funcao anonima, essa funcao vai receber os dados da resposta da requisicao, essez dados sao enviados do controller, aqui vc identifica eles pela variavel dados. A resposta sempre sera um.objeto javascript, vc pode percorrelo usando um console.log(dados), assim vc ve o que foi retornado, neste caso, o que vc precisa vai ser retornado em dados.responseJSON, mas se fosse outro formato, ele seria retornado em outro objeto.
Para percorrer o array de dados use o $.each da jquery.
}
});
atualizaSelect();
$('#iddoselect').change(function(){
atuizaSelect();
});
No controller vc poe o metod
Public function minhaacao(){
If($this->request->isAjax()){
//serve pra identificaar chamadas ajax
$dados = $this->tabela->find('list',array('fields'=>array(tabela.id,tabela.nome)));
echo json_encode($dados);
//o eccho e pra nossa funcao ajax receber estes dados no parametro da funcao complete, e o json_encode e para converter ezses dados em json.
}
}
Espero ter ajudado, estou no celular, mais tarde eu volto
--
public $helpers = array('Html', 'Form', 'Js' );
public function pegaseries(){ $idcurso = $this->request->data['Matricula']['curso_id']; $arraycursos= $this->Cursoporano->find('all', array('fields' =>array('Ano.id','Ano.ano'),'conditions'=>array('Cursoporano.curso_id' =>$idcurso))); foreach($arraycursos as $key){ $select[$key['Ano']['id']] = $key['Ano']['ano'];} $this->set('select',$select); $this->layout = 'ajax';
}
<?phpecho $this->Form->input("ano_id", array('type'=>'select', 'label' => False, 'options'=>$select)); ?>
$this->Js->request(array('controller'=>'cursoporanos', //Aqui deve-se colocar o nome do controller que recebe a requisição do Jquery'action'=>'pegaseries' // Aqui vai o id do select que, quando alterado, muda o select seguinte), array('update'=>'#ano', // Aqui vai o id do select que vai ser atualizado'async' => true,'method' => 'post','dataExpression'=>true,'data'=> $this->Js->serializeForm(array('isForm' => true,'inline' => true)))));
<?php echo $scripts_for_layout; ?><?php
if (class_exists('JsHelper') && method_exists($this->Js, 'writeBuffer')) echo $this->Js->writeBuffer();?>
//isso vai escrever o código nas páginas onde houver chamada para o JsHelper
$this->Js->get('#curso')->event('change', // Aqui em "#curso" vai o id do select que, quando alterado, muda o select seguinte
$this->Js->request(array('controller'=>'cursoporanos', //Aqui deve-se colocar o nome do controller que recebe a requisição do Jquery
'action'=>'pegaseries' // Aqui o nome da action que vai ser acessada