Pimcore where does code go

守給你的承諾、 提交于 2019-12-23 03:11:56

问题


All the examples show random pimcore code; however, I have found no explanation of where the code goes - or a complete example. I do not use pimcore for the cms. I am only interested in the object management. The code I am trying to wrte is to export objects e.g. into csv or xml.

Thanks ~


回答1:


You can either create a plugin as suggested by Johan, but a quicker way is to just put the files into the /website/lib/Website folder. This folder is already added to the autoloader so you don't need to do anything else.

For example create an ObjectExporter.php under /website/lib/Website folder with this content:

<?php
namespace Website;

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

Then you can either instantiate this class in your controller action or in a CLI script. Controller actions are within /website/controllers folder and they need to be called through http: http://localhost?controller=default&action=default

Example: /website/controllers/DefaultController.php

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

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

(You could also add your whole code directly into action, but that would be a bit ugly solution, it of course depends)

But better and quickest way to approach such tasks is with the CLI scripts. I like to use the /website/var/cli folder (you need to create it manually, but the /website/var folder is excluded in .htaccess by default which makes it practical for such use cases).

Example: /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();

Then just run it by issuing this command in your command line:

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

In case you wish to add special UI elements to the Pimcore backend, the way to go is with building an extension as suggested by Johan.

Igor




回答2:


Here is a primcore example to export a list of object into a csv file

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");
}



回答3:


You could either create a new Plugin using admin function

Extras -> Extensions -> Create new Plugin Add name Test Activate plugin in list at Extras -> Extensions

You can then add the action above to plugins/Test/controllers/IndexController.php

It's also possible to add controller code in website/controllers, there is already a default controller there.

/Johan



来源:https://stackoverflow.com/questions/33007816/pimcore-where-does-code-go

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!