openFile com erro Bom dia gaçera estou fazendo um relatorio tenho 2 methodos identicos porem no 1 onde abre um pdf de nf esta dando o seguinte erro Warning: Cannot modify header information - headers already sent by (output started at /home/progs/public_html/factor/app/control/ConhecimentoView.php:2) in /home/progs/public_html/factor/app/control/ConhecimentoView.php on line 262 so que os 2 m...
AS
openFile com erro  
Fechado
Bom dia gaçera estou fazendo um relatorio tenho 2 methodos identicos porem no 1 onde abre um pdf de nf esta dando o seguinte erro

Warning: Cannot modify header information - headers already sent by (output started at /home/progs/public_html/factor/app/control/ConhecimentoView.php:2) in /home/progs/public_html/factor/app/control/ConhecimentoView.php on line 262


so que os 2 methoso são identicos mudando apenas o arquivo que sera aberto



 
  1. <?php
  2. /** class de controle de funcionarios
  3. * author Alexandre E. Souza
  4. */
  5. class ConhecimentoView extends TStandardList{
  6. protected $grid;
  7. protected $panel;
  8. protected $form;
  9. protected $pagination;
  10. function __construct()
  11. {
  12. parent::__construct();
  13. parent::setDatabase('mysql');
  14. parent::setActiveRecord("Conhecimento");
  15. parent::setFilterField('dataEmissao');
  16. User::checaLogin('convidado');
  17. $this->panel = new TPanel(800,600);
  18. $table = new TTable();
  19. $this->form = new TQuickForm();
  20. $campo = new TEntry('nota');
  21. $campo2 = new TEntry('conhecimento');
  22. $campo->addValidation('nota', new TNumericValidator());
  23. $campo2->addValidation('conhecimento', new TNumericValidator());
  24. $this->form->addQuickField("N° nota:",$campo,100);
  25. $this->form->addQuickField("N° conhecimento:",$campo2,100);
  26. $this->form->addQuickAction("",new TAction(array($this,"onSearch")),"ico_seek.png");
  27. $this->grid = new TQuickGrid();
  28. $this->grid->setHeight("400");
  29. $this->grid->addQuickColumn('Data Emissão','dataEmissao','right',170);
  30. $this->grid->addQuickColumn('Nota','numero_nota','left',300);
  31. $this->grid->addQuickColumn('Conhecimento','numero_conhecimento','left',170);
  32. $this->grid->addQuickColumn('% Frete','porcentagem','left',300);
  33. $this->grid->addQuickColumn('Valor Nota','valor_produto','left',300);
  34. $this->grid->addQuickColumn('Valor Frete','valor_frete','left',300);
  35. $this->grid->addQuickColumn('Cliente','cliente','left',300);
  36. if(TSession::getValue('permissao')>=3){
  37. $this->grid->addQuickAction('Editar', new TDataGridAction(array('frmConhecimento','onEdit')),'id','ico_edit.png');
  38. $this->grid->addQuickAction('Deletar', new TDataGridAction(array($this,'onDelete')),'id','ico_delete.png');
  39. }
  40. $this->grid->addQuickAction('PDF Nota', new TDataGridAction(array($this,'pdf_nota')),'id','ico_pdf.png');
  41. $this->grid->addQuickAction('PDF CT-e', new TDataGridAction(array($this,'pdf_cte')),'id','ico_pdf.png');
  42. $table->addRow()->addCell($this->form);
  43. $tabela = $table->addRow();
  44. $tabela->addCell($this->grid);
  45. $novo = $table->addRow();
  46. if(TSession::getValue('permissao')>=3){
  47. $btnNovo = new TButton('novo');
  48. $btnNovo->setAction(new TAction(array('frmConhecimento','onEdit')),'Novo');
  49. $btnNovo->setImage('ico_new.png');
  50. $novo->addCell($btnNovo);
  51. }
  52. $this->grid->createModel();
  53. // creates the page navigation
  54. $this->pagination = new TPageNavigation;
  55. $this->pagination->setAction(new TAction(array($this, 'onReload')));
  56. $this->pagination->setWidth($this->grid->getWidth());
  57. $table->addRow()->addCell($this->pagination);
  58. $this->panel->put($table,50,10);
  59. // formulario
  60. parent::add($this->panel);
  61. }
  62. public function show(){
  63. parent::show();
  64. $this->onReload();
  65. }
  66. function onReload($param = NULL){
  67. $limit = 10;
  68. $this->grid->Clear();
  69. try{
  70. TTransaction::open("mysql");// abre a transação
  71. $repo = new TRepository("Conhecimento");
  72. $criteria = new TCriteria();
  73. $criteria->setProperty('order', 'dataEmissao');
  74. $criteria->setProperty('offset',$param['offset']);
  75. $criteria->setProperty('limit', $limit);
  76. $mask = new TMaskFormate();
  77. $veiculos = $repo->load($criteria);
  78. $d = new TDate('data');
  79. $formate = new TMaskFormate();
  80. foreach ($veiculos as $key ) {
  81. $item = new StdClass();
  82. $item->id = $key->id;
  83. $item->dataEmissao = $d->date2br($key->dataEmissao);
  84. $item->numero_nota = $key->numero_nota;
  85. $item->numero_conhecimento = $key->numero_conhecimento;
  86. $item->porcentagem = $key->porcentagem ;
  87. $item->valor_produto =$formate->decimal_to_reais($key->valor_produto);
  88. $item->valor_frete = $formate->decimal_to_reais($key->valor_frete);
  89. $item->cliente = $key->cliente->razaoSocial;
  90. $this->grid->addItem($item);
  91. $criteria->resetProperties();
  92. $count= $repo->count($criteria);
  93. $this->pagination->setCount($count); // count of records
  94. $this->pagination->setProperties($param); // order, page
  95. $this->pagination->setLimit($limit); // limit
  96. }
  97. TTransaction::close();// abre a transação
  98. }catch(Exeption $e){
  99. new TMessage('error',$e->getMessage());
  100. }
  101. }
  102. public function onSearch($key){
  103. $this->grid->Clear();
  104. try{
  105. TTransaction::open("mysql");// abre a transação
  106. $repo = new TRepository("Conhecimento");
  107. $criteria = new TCriteria();
  108. if(!empty($key['nota'])){
  109. $criteria->add(new TFilter("numero_nota","=",$key['nota']));
  110. }
  111. if(!empty($key['conhecimento'])){
  112. $criteria->add(new TFilter("numero_conhecimento","=",$key['conhecimento']));
  113. }
  114. $criteria->setProperty('order', 'dataEmissao');
  115. $veiculos = $repo->load($criteria);
  116. $d = new TDate('data');
  117. $formate = new TMaskFormate();
  118. foreach ($veiculos as $key ) {
  119. $item = new StdClass();
  120. $item->id = $key->id;
  121. $item->dataEmissao = $d->date2br($key->dataEmissao);
  122. $item->numero_nota = $key->numero_nota;
  123. $item->numero_conhecimento = $key->numero_conhecimento;
  124. $item->porcentagem = $key->porcentagem ;
  125. $item->valor_produto =$formate->decimal_to_reais($key->valor_produto);
  126. $item->valor_frete = $formate->decimal_to_reais($key->valor_frete);
  127. $item->cliente = $key->cliente->razaoSocial;
  128. $this->grid->addItem($item);
  129. }
  130. TTransaction::close();// abre a transação
  131. }catch(Exeption $e){
  132. new TMessage('error',$e->getMessage());
  133. }
  134. }
  135. public function pdf_nota($param){
  136. try{
  137. TTransaction::open("mysql");// abre a transação
  138. $repo = new TRepository("Conhecimento");
  139. $criteria = new TCriteria();
  140. $criteria->add(new TFilter('id','=', $param['key'])) ;
  141. $result = $repo->load($criteria);
  142. foreach ($result as $file){
  143. parent::openFile('tmp/'.$file->copia_nota);
  144. }
  145. TTransaction::close();
  146. }catch(Exception $e){
  147. new TMessage('error', $e->getMessage());
  148. TTransaction::rollback();
  149. }
  150. }
  151. public function pdf_cte($param){
  152. try{
  153. TTransaction::open("mysql");// abre a transação
  154. $repo = new TRepository("Conhecimento");
  155. $criteria = new TCriteria();
  156. $criteria->add(new TFilter('id','=', $param['key'])) ;
  157. $result = $repo->load($criteria);
  158. foreach ($result as $file){
  159. parent::openFile('tmp/'.$file->copia_conhecimento);
  160. }
  161. TTransaction::close();
  162. }catch(Exception $e){
  163. new TMessage('error', $e->getMessage());
  164. TTransaction::rollback();
  165. }
  166. }
  167. }
  168. ?>





quando abro o CT-e abre normal, quando é a nota, da esse erro, alguem saberia o porque?

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (4)


PD

Oi Alexandre,

Como a openFile() usa a função header(), só dá pra chamar uma vez, não dentro de um loop.
Se vc precisa disponibilizar vários arquivos, talvez o ideal seja montar um dialog com vários links para o usuário baixar...

abs,
Pablo
AS

então pablo a de cte_pdf funciona e a estrutura é a mesma, vou tirar do loop e ver no que dá
AS

bem pablo acredito que não foi iso não alterei fiz assim


 
  1. <?php
  2. foreach ($result as $file){
  3. $open = 'tmp/'.$file->copia_nota;
  4. }
  5. parent::openFile($open);
  6. ?>


e o erro continua
PD

Alexandre,

Verifique seu php.ini. Como está seu output_buffering?
output_buffering = 4096

abs,
Pablo