Pimcore куда уходит код

Все примеры показывают случайный код pimcore; однако я не нашел ни объяснения того, куда идет код, ни полного примера. Я не использую pimcore для cms. Меня интересует только управление объектами. Код, который я пытаюсь написать, предназначен для экспорта объектов, например. в csv или xml.

Спасибо ~


person David Latty    schedule 08.10.2015    source источник


Ответы (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, можно создать расширение, предложенное Йоханом.

Игорь

person Igor Benko    schedule 26.10.2015

Вот пример 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");
}
person Anantha Raju C    schedule 08.10.2015
comment
Я действительно приветствую ваш ответ; однако, где этот код идет. И как его запустить? Я свободно разбираюсь в php, но где мне поместить этот код в файловую систему pimcore? - person David Latty; 08.10.2015
comment
это функция в контроллере. Отсюда и название csvAction. - person campino2k; 01.03.2017

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

Extras -> Extensions -> Create new Plugin Добавить имя Test Активировать плагин в списке Extras -> Extensions

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

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

/Йохан

person Johan Lindgren    schedule 13.10.2015