所有示例都显示了随机 pimcore 代码;但是,我没有找到关于代码去向的解释——或者一个完整的例子。我不将 pimcore 用于 cms。我只对对象管理感兴趣。我正在尝试编写的代码是将对象导出到 csv 或 xml 中。
谢谢~
所有示例都显示了随机 pimcore 代码;但是,我没有找到关于代码去向的解释——或者一个完整的例子。我不将 pimcore 用于 cms。我只对对象管理感兴趣。我正在尝试编写的代码是将对象导出到 csv 或 xml 中。
谢谢~
您可以按照 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 的建议构建一个扩展。
伊戈尔
这是一个将对象列表导出到 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");
}
您可以使用管理功能创建一个新插件
Extras -> Extensions -> Create new Plugin Add name Test Activate plugin in list at Extras -> Extensions
然后,您可以将上述操作添加到 plugins/Test/controllers/IndexController.php
也可以在网站/控制器中添加控制器代码,那里已经有一个默认控制器。
/约翰