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
so que os 2 methoso são identicos mudando apenas o arquivo que sera aberto
quando abro o CT-e abre normal, quando é a nota, da esse erro, alguem saberia o porque?
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
- <?php
- /** class de controle de funcionarios
- * author Alexandre E. Souza
- */
- class ConhecimentoView extends TStandardList{
- protected $grid;
- protected $panel;
- protected $form;
- protected $pagination;
- function __construct()
- {
- parent::__construct();
- parent::setDatabase('mysql');
- parent::setActiveRecord("Conhecimento");
- parent::setFilterField('dataEmissao');
- User::checaLogin('convidado');
- $this->panel = new TPanel(800,600);
- $table = new TTable();
- $this->form = new TQuickForm();
- $campo = new TEntry('nota');
- $campo2 = new TEntry('conhecimento');
- $campo->addValidation('nota', new TNumericValidator());
- $campo2->addValidation('conhecimento', new TNumericValidator());
- $this->form->addQuickField("N° nota:",$campo,100);
- $this->form->addQuickField("N° conhecimento:",$campo2,100);
- $this->form->addQuickAction("",new TAction(array($this,"onSearch")),"ico_seek.png");
- $this->grid = new TQuickGrid();
- $this->grid->setHeight("400");
- $this->grid->addQuickColumn('Data Emissão','dataEmissao','right',170);
- $this->grid->addQuickColumn('Nota','numero_nota','left',300);
- $this->grid->addQuickColumn('Conhecimento','numero_conhecimento','left',170);
- $this->grid->addQuickColumn('% Frete','porcentagem','left',300);
- $this->grid->addQuickColumn('Valor Nota','valor_produto','left',300);
- $this->grid->addQuickColumn('Valor Frete','valor_frete','left',300);
- $this->grid->addQuickColumn('Cliente','cliente','left',300);
- if(TSession::getValue('permissao')>=3){
- $this->grid->addQuickAction('Editar', new TDataGridAction(array('frmConhecimento','onEdit')),'id','ico_edit.png');
- $this->grid->addQuickAction('Deletar', new TDataGridAction(array($this,'onDelete')),'id','ico_delete.png');
- }
- $this->grid->addQuickAction('PDF Nota', new TDataGridAction(array($this,'pdf_nota')),'id','ico_pdf.png');
- $this->grid->addQuickAction('PDF CT-e', new TDataGridAction(array($this,'pdf_cte')),'id','ico_pdf.png');
- $table->addRow()->addCell($this->form);
- $tabela = $table->addRow();
- $tabela->addCell($this->grid);
- $novo = $table->addRow();
- if(TSession::getValue('permissao')>=3){
- $btnNovo = new TButton('novo');
- $btnNovo->setAction(new TAction(array('frmConhecimento','onEdit')),'Novo');
- $btnNovo->setImage('ico_new.png');
- $novo->addCell($btnNovo);
- }
- $this->grid->createModel();
- // creates the page navigation
- $this->pagination = new TPageNavigation;
- $this->pagination->setAction(new TAction(array($this, 'onReload')));
- $this->pagination->setWidth($this->grid->getWidth());
- $table->addRow()->addCell($this->pagination);
- $this->panel->put($table,50,10);
- // formulario
- parent::add($this->panel);
- }
- public function show(){
- parent::show();
- $this->onReload();
- }
- function onReload($param = NULL){
- $limit = 10;
- $this->grid->Clear();
- try{
- TTransaction::open("mysql");// abre a transação
- $repo = new TRepository("Conhecimento");
- $criteria = new TCriteria();
- $criteria->setProperty('order', 'dataEmissao');
- $criteria->setProperty('offset',$param['offset']);
- $criteria->setProperty('limit', $limit);
- $mask = new TMaskFormate();
- $veiculos = $repo->load($criteria);
- $d = new TDate('data');
- $formate = new TMaskFormate();
- foreach ($veiculos as $key ) {
- $item = new StdClass();
- $item->id = $key->id;
- $item->dataEmissao = $d->date2br($key->dataEmissao);
- $item->numero_nota = $key->numero_nota;
- $item->numero_conhecimento = $key->numero_conhecimento;
- $item->porcentagem = $key->porcentagem ;
- $item->valor_produto =$formate->decimal_to_reais($key->valor_produto);
- $item->valor_frete = $formate->decimal_to_reais($key->valor_frete);
- $item->cliente = $key->cliente->razaoSocial;
- $this->grid->addItem($item);
- $criteria->resetProperties();
- $count= $repo->count($criteria);
- $this->pagination->setCount($count); // count of records
- $this->pagination->setProperties($param); // order, page
- $this->pagination->setLimit($limit); // limit
- }
- TTransaction::close();// abre a transação
- }catch(Exeption $e){
- new TMessage('error',$e->getMessage());
- }
- }
- public function onSearch($key){
- $this->grid->Clear();
- try{
- TTransaction::open("mysql");// abre a transação
- $repo = new TRepository("Conhecimento");
- $criteria = new TCriteria();
- if(!empty($key['nota'])){
- $criteria->add(new TFilter("numero_nota","=",$key['nota']));
- }
- if(!empty($key['conhecimento'])){
- $criteria->add(new TFilter("numero_conhecimento","=",$key['conhecimento']));
- }
- $criteria->setProperty('order', 'dataEmissao');
- $veiculos = $repo->load($criteria);
- $d = new TDate('data');
- $formate = new TMaskFormate();
- foreach ($veiculos as $key ) {
- $item = new StdClass();
- $item->id = $key->id;
- $item->dataEmissao = $d->date2br($key->dataEmissao);
- $item->numero_nota = $key->numero_nota;
- $item->numero_conhecimento = $key->numero_conhecimento;
- $item->porcentagem = $key->porcentagem ;
- $item->valor_produto =$formate->decimal_to_reais($key->valor_produto);
- $item->valor_frete = $formate->decimal_to_reais($key->valor_frete);
- $item->cliente = $key->cliente->razaoSocial;
- $this->grid->addItem($item);
- }
- TTransaction::close();// abre a transação
- }catch(Exeption $e){
- new TMessage('error',$e->getMessage());
- }
- }
- public function pdf_nota($param){
- try{
- TTransaction::open("mysql");// abre a transação
- $repo = new TRepository("Conhecimento");
- $criteria = new TCriteria();
- $criteria->add(new TFilter('id','=', $param['key'])) ;
- $result = $repo->load($criteria);
- foreach ($result as $file){
- parent::openFile('tmp/'.$file->copia_nota);
- }
- TTransaction::close();
- }catch(Exception $e){
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public function pdf_cte($param){
- try{
- TTransaction::open("mysql");// abre a transação
- $repo = new TRepository("Conhecimento");
- $criteria = new TCriteria();
- $criteria->add(new TFilter('id','=', $param['key'])) ;
- $result = $repo->load($criteria);
- foreach ($result as $file){
- parent::openFile('tmp/'.$file->copia_conhecimento);
- }
- TTransaction::close();
- }catch(Exception $e){
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
- ?>
quando abro o CT-e abre normal, quando é a nota, da esse erro, alguem saberia o porque?
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
então pablo a de cte_pdf funciona e a estrutura é a mesma, vou tirar do loop e ver no que dá
bem pablo acredito que não foi iso não alterei fiz assim
e o erro continua
Alexandre,
Verifique seu php.ini. Como está seu output_buffering?
output_buffering = 4096
abs,
Pablo