Abrir janela modal (atalho), dar insert no bd e atualizar o select
Pessoal,
Preciso fazer algo mais ou menos assim:
O usuario vai cadastrar um produto e escolhe a unidade desse produto (uma lista em um combobox). Porém, pode acontecer, em determinado momento, de não ter uma unidade cadastrada, para não perder tempo nem o que já foi digitado, terá um link (atalho), do lado do combobox de unidades, para incluir uma nova unidade. Abrirá uma janela modal, o usuário inclui a unidade nova que deseja, fecha essa janela e automaticamente o que foi cadastrado deve ser listado no combobox para que o usuario possa selecionar.
Alguém tem alguma ideia de como fazer isso com CakePHP e Js Helper ou JQuery.
Achei esse tutorial:
http://www.webbedit.co.uk/blog_posts/view/tutorial-cakephp-modalbox-crud
Mas infelizmente está desatualizado, pois utilizo a versão 2.2.5 do Cake e os arquivo JS que ele utiliza não encontro mais para download.
Alguém pode me ajudar?
Pessoal,
Preciso muito resolver isso. Por favor.
Pessoal,
Consigo abrir a janela modal e salvar no BD, o problema é que não consigo atualizar meu combobox após fechar a janela modal.
Fiz isso:
VIEW
echo $this->Form->input('unidade_id', array( 'label' => 'Unidade: ', 'empty' => 'Selecione...', 'id' => 'unidade_id', 'after' => ' ' . $this->Html->link('+ Unidade', '#', array('class' => 'addNewUnidade'))));<!-- Modal Dialog for Adding New Category (THIS IS HIDDEN UNTIL GET CALLED AS MODAL DIALOG)--><div class="dialog-form" title='Inserir uma nova unidade.'> <?php echo $this->Form->create('Unidade'); echo $this->Form->input('nome'); echo $this->Form->input('sigla'); echo $this->Form->input('ativo'); echo $this->Form->end(__('Submit')); ?> </div><script type="text/javascript"> $('.dialog-form').dialog({ autoOpen: false, title: 'Inserir uma nova unidade.', modal: true, height: 300, width: 350, close: function() { } }); $('.addNewUnidade').click(function() { $('.dialog-form').dialog('open'); }); $('.dialog-form .submit').click(function(e) { var value1 = document.getElementById('UnidadeNome').value; var value2 = document.getElementById('UnidadeSigla').value; var value3 = document.getElementById('UnidadeAtivo').value; var data = { 'data[Unidade][nome]':value1, 'data[Unidade][sigla]':value2, 'data[Unidade][ativo]':value3 }; e.preventDefault(); $.ajax({ type:"POST", url: "<?php echo $this->Html->url(array('controller' => 'unidades', 'action' => 'add')); ?>", data: data, success: function(html/*echoedResponseFromPHPController*/) { $('.dialog-form').dialog('close'); $("#unidade_id").replaceWith(html); //$("#unidade_id").replaceWith(echoedResponseFromPHPController); } }) }); </script>
CONTROLLER (unidadesController)
public function add() { if ($this->request->is('post')) { $this->Unidade->create(); if ($this->Unidade->save($this->request->data)) { $this->Session->setFlash(__('The unidade has been saved')); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('The unidade could not be saved. Please, try again.')); } } }
Discussão (1)
Carregando comentários...