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