Autor Zpráva
Pavel015
Profil
Dobrý večer,

chtěl bych se prosím zeptat na možná triviální věc. Potřeboval bych implementovat QR platbu na web v PHP. Implementace je v repozitáři github.com/dfridrich/QRPlatba, nicméně, když si v kořenovém adresáři vytvořím index.php a vložím do něj následující kód z příkladu, nefunguje mi to. Mohli byste mi prosím poradit?

Moc děkuji.

<?php

require __DIR__ . '/vendor/autoload.php';

use Defr\QRPlatba\QRPlatba;

$qrPlatba = new QRPlatba();

$qrPlatba->setAccount('12-3456789012/0100')
    ->setVariableSymbol('2016001234')
    ->setMessage('Toto je první QR platba.')
    ->setSpecificSymbol('0308')
    ->setSpecificSymbol('1234')
    ->setCurrency('CZK') // Výchozí je CZK, lze zadat jakýkoli ISO kód měny
    ->setDueDate(new \DateTime());

echo $qrPlatba->getQRCodeImage(); // Zobrazí <img> tag s kódem, viz níže  
Keeehi
Profil
Pavel015:
Poradit ti samozřejmě můžeme, ovšem musíš nám říct, jak se ta nefunkčnost projevuje.
Pavel015
Profil
Keeehi:
Při spuštění src/QRPlatba.php se nic nestane.
Při vytvoření zmíněného souboru v kořenovém adresáři se vypíše chyba. Proto zakomentuju řádek s autoloadem, jenže to vypisuje chybu č.2.

Chyba č. 1.
Warning: require(/Applications/XAMPP/xamppfiles/htdocs/QRPlatba/vendor/autoload.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/QRPlatba/index.php on line 3

Fatal error: require(): Failed opening required '/Applications/XAMPP/xamppfiles/htdocs/QRPlatba/vendor/autoload.php' (include_path='.:/Applications/XAMPP/xamppfiles/lib/php') in /Applications/XAMPP/xamppfiles/htdocs/QRPlatba/index.php on line 3


Chyba č.2.
Fatal error: Uncaught Error: Class 'Defr\QRPlatba\QRPlatba' not found in /Applications/XAMPP/xamppfiles/htdocs/QRPlatba/index.php:7 Stack trace: #0 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/QRPlatba/index.php on line 7
Ikki
Profil
Pravděpodobně tě bude zajímat jen tato část díky které pravděpodobně vzniká chyba č.2.

CESTA: /Applications/XAMPP/xamppfiles/htdocs/QRPlatba/vendor/autoload.php > CHYBA: failed to open stream: No such file or directory

Web ti říká, že nedokáže otevřít/najít soubor autoload.php ve složce /Applications/XAMPP/xamppfiles/htdocs/QRPlatba/vendor - nahraj tam soubor a pravděpodobně to bude oka
Pavel015
Profil
Ikki:
Jenže soubor vendor ani autoload.php neexistuje.
Ikki
Profil
A proč by neexistoval? Pokud vím, tak autoload pokud není nějak speciální, tak je běžně ke stažení. Ty ho jen musíš umístit do složky ke které vede cesta.
blaaablaaa
Profil
Pavel015:
Ten autoload vzniká při instalaci skrze composer.
Při obyčejném zkopírování zdroje je třeba místo require autoloaderu přidat require obou souborů z adresáře src.
Pavel015
Profil
Ikki, blaaablaaa:
Moc díky za nasměrování! Už jsem to rozchodil :)!

Pro budoucí generace: instalace zde - www.youtube.com/watch?v=RkIJYud9X8w.
Keeehi
Profil
Pro budoucí generace: Pro úspešnou instalaci se držte pokynů v dokumentaci a nepřeskakujte žádné kroky pokud si nejste jistí, co opravdu děláte.
V případě Pavel015 se stalo, že přeskočil composer require dfridrich/qr-platba a tudíž se nevygeneroval ani autoload script, se kterým samozřejmě v dalším kódu v ukázce počítá.
Pavel015
Profil
Keeehi:
Je totiž nevyhnutelná instalace Composteru.
Keeehi
Profil
Pavel015:
Je totiž nevyhnutelná instalace Composteru.
Víceméně. Ono tedy dalo by se composeru vynout a includy si dělat ručně, jak psal blaaablaaa v [#7]. Ovšem knihovna dfridrich/QRPlatba není funkční sama o sobě. Ona sice generuje data pro platbu, ale o vygenerování samotného obrázku s QR kódem se nestará. To nechává na knihovně endroid/qr-code. Musel bys tedy stáhnout i tu a ručně includnout php soubory z ní (a že jich tam je). Tím to ovšem nekončí. Samotné knihovna endroid/qr-code také nedělá úplně všechno a spoléhá se na funkcionalitu dalších pěti knihoven. Hlouběji už se mi to zkoumat nechtělo ale je snad z toho jasné, že by to bylo spoustu práce.
Možná cesta i bez composeru tu je, ovšem použití composeru je mnohem lehčí. Protože jinak vlastně přesně to co dělá composer musí udělat člověk sám ručně.
Pavel015
Profil
Keeehi:
Moc díky za delší osvětlení problému :). Pěkný den.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0