Yii Framework Forum: Abrir Uma Nova Janela A Partir Da Action - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Abrir Uma Nova Janela A Partir Da Action Rate Topic: -----

#1 User is offline   ViradoNoJiraya 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 09-July 12

Posted 27 November 2012 - 11:29 AM

Boa tarde galera,

Eu estou a uns 2 dias pesquisando sobre como fazer isso e não consigo. O que eu preciso é o seguinte: O usuário seleciona uma certa quantidade de itens, esses itens serão associados a um termo. Quando ele vai clicar em salvar existe um checkbox em cima do salvar que pergunta se ele gostaria de imprimir o relatório assim que salvar. Ele salva OK, mas eu não consigo fazer esse relatório abrir, de jeito nenhum. Na tela de consulta, pelo botão imprimir funciona normalmente, abrindo em outra aba.
O método está no meu controller, o que eu já tentei:


             
 /*Tentativa 1*/
 echo '<script>';
 echo "var tea_id = $ultimoId";
 echo'window.open("index.php?r=estoque/termoEmpenhoAdquirido/imprimirRelatorioTombo&tea_id="+tea_id) ';
 echo'</script>';

/*Tentativa 2*/
this->redirect(array('imprimirRelatorioTombo'),array('tea_id' => $ultimoId));

/*Tentativa 3*/ 
echo  Yii::app()->createUrl('termoEmpenhoAdquirido/imprimirRelatorioTombo', array('tea_id' => $ultimoId));

/*Tentativa 4 - Essa funciona, porém sobrepõe a janela do sistema*/
$this->actionImprimirRelatorioTombo($ultimoId);



Agradeço desde já.
0

#2 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 819
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 27 November 2012 - 07:10 PM

Ninja,

O actionImprimirRelatorioTombo() ele ja abri para download ou ele carrega o relatório?

$this->redirect(Yii::app()->createUrl('termoEmpenhoAdquirido/imprimirRelatorioTombo', array('tea_id' => $ultimoId)));


Veja se assim vai funcionar.
Newerton Vargas de Araújo
0

#3 User is offline   ViradoNoJiraya 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 09-July 12

Posted 28 November 2012 - 07:40 AM

Newerton valeu pela ajuda,

Esse método que você colocou funciona, mas faz a mesma coisa que essa linha:

$this->actionImprimirRelatorioTombo($ultimoId);


Ele sobrescreve a tela do sistema. O relatório está para ser impresso na janela em PDF, então quando aparece não tem como voltar pro sistema, só com o voltar do navegador, aí já viu né, esse botão consegue detonar um sistema :lol:
0

#4 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 819
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 28 November 2012 - 07:50 AM

Entendi,

É complicado, por que você precisa submeter o formulário, e abrir uma nova janela.

Você pode fazer isso usando jQuery.

$('form').live('submit', function(){
	
	var check = $('input#id').is(':checked'); //adiciona a ID correta do campo
	
	if(check){
		var tea_id = $model->primaryKey;
		window.open("index.php?r=estoque/termoEmpenhoAdquirido/imprimirRelatorioTombo&tea_id="+tea_id);
	}
	
	return true;
});


Esse é modo de fazer quando for um formulário de atualizar/editar.
Agora se a váriavel $ultimoId for o último ID adicionado no banco de dados, ai vai precisar usar o ajaxForm(), que vai submeter o formulário em ajax, e retornar o ID adicionado, ai você adiciona esse ID no window.open() abrindo a janela do PDF, e debaixo do window.open() você pode colocar o location.href='' para direcionar o formulário para listagem, assim fica do jeito que você quer.
Newerton Vargas de Araújo
0

#5 User is offline   ViradoNoJiraya 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 09-July 12

Posted 28 November 2012 - 09:03 AM

Vou tentar fazer aqui, primeiro vou ver se a versão do Yii tem os widgets necessários, aqui a versão é a 1.0.5 :(. Se eu conseguir eu volto e posto o resultado.
0

#6 User is offline   ViradoNoJiraya 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 09-July 12

Posted 05 December 2012 - 09:12 AM

Consegui resolver,
Não ficou muuuuito bonito, mas funcionou. Eu fiz o seguinte:
Eu passei o ultimo id vindo do banco e uma flag caso o checkbox estivesse marcado, direto pra action.

 
if ($_POST["imp_termo"] == 1) {
   $imprimir = true;
                }
$this->actionAdmin($ultimoId,$imprimir);

Na view eu verifiquei se a flag era true, se for eu utilizei o window.open pra chamar o relatório. Funcionou perfeitamente.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users