1

所有示例都显示了随机 pimcore 代码;但是,我没有找到关于代码去向的解释——或者一个完整的例子。我不将 pimcore 用于 cms。我只对对象管理感兴趣。我正在尝试编写的代码是将对象导出到 csv 或 xml 中。

谢谢~

4

3 回答 3

1

您可以按照 Johan 的建议创建插件,但更快的方法是将文件放入 /website/lib/Website 文件夹。此文件夹已添加到自动加载器中,因此您无需执行任何其他操作。

例如,使用以下内容在 /website/lib/Website 文件夹下创建一个 ObjectExporter.php:

<?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 后端添加特殊的 UI 元素,可以按照 Johan 的建议构建一个扩展。

伊戈尔

于 2015-10-26T11:08:21.573 回答
0

这是一个将对象列表导出到 csv 文件的 primcore 示例

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");
}
于 2015-10-08T06:11:02.993 回答
0

您可以使用管理功能创建一个新插件

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

然后,您可以将上述操作添加到 plugins/Test/controllers/IndexController.php

也可以在网站/控制器中添加控制器代码,那里已经有一个默认控制器。

/约翰

于 2015-10-13T06:15:50.787 回答