oi Aline, só tem um pequeno probleminha com o seu codigo: eh que voce
esta fugindo do modelo MVC ao mesclar o controlador e a visao na mesma
action. Falo isso porque quando comecei a mexer com o fpdf eu fiz
exatamente da mesma maneira que voce fez agora, mas isso nao eh a
melhor forma, concorda?
o que eu fiz foi definir as variaveis na minha action (fazer consultas
ao banco de dados, etc), como normalmente eh feito. E na sua view,
voce colocaria o seu codigo do fpdf, exemplo:
> > $pdf = new PDF();
> > $pdf->Open();
> > ... e por aih vai...
mas aih se voce tentar rodar isso vai dar um erro no fpdf. Isso
acontece porque o symfony vai tentar enviar o conteudo como html, mas
na verdade ele teria que enviar o conteudo como PDF. Alem disso,
normalmente a camada de visao vai tentar adicionar um layout, mas aki
isso nao eh necessario. Mas entao, como resolver isso? Eh simples:
Basta adicionar esse arquivo view.yml na pasta config do seu modulo de
relatorios:
gerarReportSuccess:
has_layout: off # nao precisamos do layout
http_metas:
content-type: application/pdf # vamos enviar um arquivo pdf ao
browser, ao inves de html (padrao)
Ah e tem um outro pequeno ajuste que precisa ser feito. Quando voce
esta no ambiente de desenvolvimento (frontend_dev.php), o symfony
sempre adicionar akela barrinha de debug no topo da pagina, mas como
estamos gerando um PDF, isso provavelmente vai dar conflito com o
FPDF. Pra evitar isso, basta adicionar o seguinte codigo no seu
controlador:
public function preExecute()
{
// como vamos gerar um PDF, nao precisamos da barrinha de DEBUG
sfConfig::set('sf_web_debug', false);
}
Feito isso, voce vai poder separar novamente as suas camadas de visao
e controle, e o seu codigo ficara mais organizado :D
Abraços,
Vitor Mello