Witajcie, drodzy Forumowicze.
W pewnym projekcie programistycznym opartym o framework Symfony 3.3 potrzebuję wygenerować plik w formacie doc z pewną zawartością. Wybór padł na darmową bibliotekę PHPWord w wersji 0.16, którą zainstalowałem korzystając z composera. Opierając się o tutorial (https://ourcodeworld.com/articles/read/361/how-to-create-a-word-file-with-php-in-symfony-3), próbowałem skorzystać z jej "dobrodziejstw". Niestety, mam problem z przestrzenią nazw.
Monit, który otrzymuję jest następujący:
Attempted to load class "PhpWord" from namespace "PhpOffice\PhpWord". Did you forget a "use" statement for another namespace?
use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\IOFactory; public function generateDocAction(Request $request) { require_once $this->get('kernel')->getRootDir() . '/../vendor/autoload.php'; $phpWord = new \PhpOffice\PhpWord\PhpWord(); $section = $phpWord->addSection(); $section->addText( '"Learn from yesterday, live for today, hope for tomorrow. ' . 'The important thing is not to stop questioning." ' . '(Albert Einstein)' ); $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007'); $fileName = 'download_file.docx'; $temp_file = http://www.php.net/tempnam(sys_get_temp_dir(), $fileName); $objWriter->save($temp_file); $response = new BinaryFileResponse($temp_file); $response->setContentDisposition( ResponseHeaderBag::DISPOSITION_ATTACHMENT, $fileName ); return $response; }
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord = new PhpWord();
"vendor/phpoffice/phpword/src/PhpWord/PhpWord.php"
wywaliłeś cache symfony?
Pierwsze, co zrobiłem to wyczyściłem symfoniasty cache do zera, jednak to nic nie dało.
Wygląda na jakiś bug w bibliotece. Ten sam błąd jest sygnalizowany na localhoście przy PHP w wersji 5.6, jak również na hostingu, gdzie PHP oznaczone jest numerkiem 7.2.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)