Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony 3] Problem z biblioteką PHPWord, Attempted to load class "PhpWord"
swiezak
post 26.01.2019, 13:43:31
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.08.2011

Ostrzeżenie: (0%)
-----


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:
  1. Attempted to load class "PhpWord" from namespace "PhpOffice\PhpWord". Did you forget a "use" statement for another namespace?


W kontrolerze wywołuję bibliotekę w poniższy sposób:
  1. use PhpOffice\PhpWord\PhpWord;
  2. use PhpOffice\PhpWord\IOFactory;
  3.  
  4. public function generateDocAction(Request $request)
  5. {
  6. require_once $this->get('kernel')->getRootDir() . '/../vendor/autoload.php';
  7.  
  8. $phpWord = new \PhpOffice\PhpWord\PhpWord();
  9. $section = $phpWord->addSection();
  10.  
  11. $section->addText(
  12. '"Learn from yesterday, live for today, hope for tomorrow. '
  13. . 'The important thing is not to stop questioning." '
  14. . '(Albert Einstein)'
  15. );
  16.  
  17. $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
  18. $fileName = 'download_file.docx';
  19. $temp_file = tempnam(sys_get_temp_dir(), $fileName);
  20. $objWriter->save($temp_file);
  21.  
  22. $response = new BinaryFileResponse($temp_file);
  23. $response->setContentDisposition(
  24. ResponseHeaderBag::DISPOSITION_ATTACHMENT,
  25. $fileName
  26. );
  27.  
  28. return $response;
  29. }


Debuger zatrzymuje się na linijce:
  1. $phpWord = new \PhpOffice\PhpWord\PhpWord();


Zmieniłem na:
  1. $phpWord = new PhpWord();

i ten sam objaw, co wyżej.

Próbowałem różnych zabiegów, mających na celu eliminację wspomnianego błędu (m.in. dodałem w pliku composer.json w sekcji "classmap" stosowną ścieżkę):
  1. "vendor/phpoffice/phpword/src/PhpWord/PhpWord.php"

ale bez rezultatu.

Czy ktoś z Was korzystał z tego rozwiązania i podpowie na co należy zwrócić uwagę i co zrobić, aby to działało jak należy?

Będę wdzięczny za zainteresowanie tematem i pomoc.

Ten post edytował swiezak 26.01.2019, 13:44:07
Go to the top of the page
+Quote Post
Pyton_000
post 26.01.2019, 17:24:26
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


wywaliłeś cache symfony?
Go to the top of the page
+Quote Post
swiezak
post 26.01.2019, 17:59:46
Post #3





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.08.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 12:20