2016-05-17 4 views
0

bis jetzt habe ich alle meinen Code in pimcore \ cli \ startup.php platziert und es läuft gut, aber wenn ich auf eine andere Weise versuche ich bekomme Fehler wie Class 'Website \ ObjectExporter‘nicht im Verzeichnis C: \ xampp \ htdocs \ pimcore \ Website \ var \ cli \ export-objects.php auf Linie 7 Wie Code auf diese Weise laufenWie man ein CLI-Skript in Pimcore

zum Beispiel eine ObjectExporter.php unter/Webseite erstellen/lib/Website-Ordner mit diesem Inhalt:

<?php 
namespace Website; 

class ObjectExporter 
{ 
    public function exportObjects() 
    { 
     // Your code 
    } 
} 

Dann können Sie diese Klasse in Ihrer Controller-Aktion oder in einem CLI Skript entweder instanziiert. Controller-Aktionen sind innerhalb/Website/controllers Ordner und sie müssen über http aufgerufen werden: http://localhost?controller=default&action=default

Beispiel: /website/controllers/DefaultController.php

<?php 
class DefaultController extends Website_Controller_Action { 
    public function defaultAction() { 
     $this->disableViewAutoRender(); 

     $objectExporter = new Website\ObjectExporter(); 
     $objectExporter->exportObjects(); 
    } 
} 

(Sie auch direkt den ganzen Code hinzufügen könnte in Aktion, aber das wäre ein bisschen hässliche Lösung, es hängt natürlich davon ab)

Aber besser und schneller Weg, um solche Aufgaben zu nähern ist mit den CLI-Skripten. Ich möchte den Ordner/website/var/cli verwenden (Sie müssen ihn manuell erstellen, aber der Ordner/website/var wird standardmäßig in .htaccess ausgeschlossen, was ihn für solche Anwendungsfälle praktisch macht).

Beispiel: /website/var/cli/export-objects.php

<?php 
$workingDirectory = getcwd(); 
chdir(__DIR__); 
include_once("../../../pimcore/cli/startup.php"); 
chdir($workingDirectory); 

$objectExporter = new Website\ObjectExporter(); 
$objectExporter->exportObjects(); 

Dann führen Sie es nur mit diesem Befehl in der Befehlszeile eingeben:

php website/var/cli/export-objects.php 
+0

Dies passt nicht wirklich das Q & A-Format von StackOverflow. Sie sollten eine definitive Frage stellen und fühlen sich frei, diese Frage selbst im Antwortabschnitt zu beantworten, dann nicht nur ein "How To" vollständig in Ihre Frage zu stellen. – GNi33

Antwort