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





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

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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.           
  4.           $open 'tmp/'.$file->copia_nota;
  5.           
  6.       }
  7.       
  8.       parent::openFile($open);
  9. ?>


e o erro continua
PD

Alexandre,

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

abs,
Pablo