2016-03-22 6 views
0

Ich kann Composer nicht verwenden und muss daher CakePDF plugin manuell installieren, aber folgende Beispiele aus der offiziellen CakePHP-Dokumentation scheinen nicht zu funktionieren.Wie installiere ich ein Plugin manuell in CakePHP 3?

So, hier ist die Installation fließen, die ich verfolgt haben:

1.) Kopiert das Plugin app/plugins/CakePdf

2.) aktualisiert, um die Datei composer.json App wie folgt vor:

"autoload": { 
    "psr-4": { 
      "CakePdf\\": "./plugins/CakePdf/src", 
      "CakePdf\\Test\\": "./plugins/CakePdf/tests" 
    } 
}, 
"autoload-dev": { 
    "psr-4": { 
     "App\\Test\\": "tests", 
     "Cake\\Test\\": "./vendor/cakephp/cakephp/tests" 
     "CakePdf\\": "./plugins/CakePdf/src", 
     "CakePdf\\Test\\": "./plugins/CakePdf/tests" 
    } 
} 

3 .) Geladen das Plugin in bootstrap.php:

Plugin::load('CakePdf', ['bootstrap' => true, 'routes' => true, 'autoload' => true]); 

4.) hinzugefügt Router Erweiterungen:

Router::extensions(['pdf']); 

5.) Versucht ein sehr einfaches Beispiel aus doc Plugin:

$cakePdf = new CakePdf(array(
    'engine' => 'CakePdf.DomPdf', 
    'pageSize' => 'A4', 
    'orientation' => 'portrait' 
)); 

$html = '<html><head><body><p>Pdftest</p></body></head></html>'; 

$rawPdf = $CakePdf->output($html); 

jedoch die Code Pausen in der ersten Zeile und die folgende Fehlermeldung zur Verfügung gestellt :

Class 'App\Controller\CakePdf' not found 

Ich würde wirklich jede Hilfe oder Anleitung schätzen, wie ein Plugin manuell installiert werden sollte.

Wenn es andere Informationen gibt, die ich zur Verfügung stellen muss, fragen Sie einfach.

+0

Einfach updaten composer.json wird nichts nützen. Sie müssen danach 'composer update' ausführen. – ADmad

Antwort

1

Sie erhalten diesen Fehler, weil in vendor/composer/ Sie einige autoload_*.php Dateien sehen können. Diese Dateien enthalten die Pfade zum Laden Ihrer Klassen. Ich denke, niemand kann dir sicher sagen, was zu aktualisieren ist und wo in diesen Dateien.

So haben Sie zwei Möglichkeiten:

1-composer.json auf einem lokalen Rechner kopieren und composer update laufen. Verschieben Sie dann die in Ihrer App erstellten Dateien. Ich würde vorschlagen, vorher ein Backup zu machen. Wahrscheinlich die Dinge, die Sie haben, sich zu bewegen, sind:

vendor/ 
composer.json 
composer.lock 

2 - Starten Sie die Dateien in vendor/composer/autoload_*.php mit den Pfaden von der Plugin-Update. Höchstwahrscheinlich müssen Sie nur die folgenden zwei Dateien aktualisieren:

vendor/cakephp-plugins.php und vendor/composer/autoload_psr4.php. Persönlich würde ich nicht die zweite Lösung wählen, ich füge es nur als Alternative für den Fall hinzu.

+0

Ihr Kommentar ist nützlich. Ich muss nur hinzufügen, dass wir diesen Befehl in einem bestimmten Plugin und nicht im Stammordner aktualisieren müssen. –