Pimcore, куда идет код

Все примеры показывают случайный код Pimcore; Однако я не нашел объяснения того, куда код идет - или полный пример. Я не использую Pimcore для CMS. Меня интересует только управление объектами. Код, который я пытаюсь написать, - экспортировать объекты, например, в CSV или XML.

Спасибо ~

3 ответа

Вы можете создать плагин, как предложено Йоханом, но более быстрый способ - просто поместить файлы в папку /website/lib/Website. Эта папка уже добавлена ​​в автозагрузчик, поэтому вам больше ничего не нужно делать.

Например, создайте ObjectExporter.php в папке /website/lib/Website с таким содержимым:

<?php
namespace Website;

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

Затем вы можете создать экземпляр этого класса в действии контроллера или в скрипте CLI. Действия контроллера находятся в папке / website / controllers, и их нужно вызывать через http: http://localhost/?controller=default&action=default

Пример: /website/controllers/DefaultController.php

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

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

(Вы также можете добавить весь свой код непосредственно в действие, но это будет немного уродливым решением, конечно, это зависит)

Но лучший и быстрый способ решения таких задач - использование скриптов CLI. Мне нравится использовать папку /website/var/cli (вам нужно создать ее вручную, но папка / website / var по умолчанию исключена в.htaccess, что делает его практичным для таких случаев использования).

Пример: /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();

Затем просто запустите его, введя эту команду в командной строке:

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

Если вы хотите добавить специальные элементы пользовательского интерфейса в бэкэнд Pimcore, лучше всего создать расширение, предложенное Йоханом.

Игорь

Вот пример primcore для экспорта списка объектов в CSV-файл

private function csvAction(){
$this->disableLayout();
$this->disableViewAutoRender();

$obj_list = new YourObject_List();
$obj_list->load();

/* @var $obj Object_YourObject */
$out = array();

foreach($obj_list as $obj){
    $entry = array();
    $entry["key"] = $obj->getKey();

    $entry["Field 1"] = $obj->getField1();
    $entry["Field 2"] = $obj->getField2();
    $entry["Field 3"] = $obj->getField3();
    $out[]=$entry;
}

$this->_helper->Csv($out, "produkt");
}

Вы можете создать новый плагин, используя функцию администратора

Дополнения -> Расширения -> Создать новый плагин Добавить имя Тест Активировать плагин в списке в разделе Дополнения -> Расширения

Затем вы можете добавить вышеуказанное действие в plugins/Test/controllers/IndexController.php

Также возможно добавить код контроллера на сайт / контроллеры, там уже есть контроллер по умолчанию.

/ Johan

Другие вопросы по тегам