- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试扩展 Pimcore 中的批量对象导入功能,以将用户限制在他们在自定义布局中可用的字段。
我需要覆盖的文件是
pimcore/modules/admin/controllers/ObjectController.php
我相信我需要扩展的方法是:
public function importGetFileInfoAction()
{
$success = true;
$supportedFieldTypes = ["checkbox", "country", "date", "datetime", "href", "image", "input", "language", "table", "multiselect", "numeric", "password", "select", "slider", "textarea", "wysiwyg", "objects", "multihref", "geopoint", "geopolygon", "geobounds", "link", "user", "email", "gender", "firstname", "lastname", "newsletterActive", "newsletterConfirmed", "countrymultiselect", "objectsMetadata"];
$file = PIMCORE_SYSTEM_TEMP_DIRECTORY . "/import_" . $this->getParam("id");
// determine type
$dialect = Tool\Admin::determineCsvDialect(PIMCORE_SYSTEM_TEMP_DIRECTORY . "/import_" . $this->getParam("id") . "_original");
$count = 0;
if (($handle = fopen($file, "r")) !== false) {
while (($rowData = fgetcsv($handle, 0, $dialect->delimiter, $dialect->quotechar, $dialect->escapechar)) !== false) {
if ($count == 0) {
$firstRowData = $rowData;
}
$tmpData = [];
foreach ($rowData as $key => $value) {
$tmpData["field_" . $key] = $value;
}
$data[] = $tmpData;
$cols = count($rowData);
$count++;
if ($count > 18) {
break;
}
}
fclose($handle);
}
// get class data
$class = Object\ClassDefinition::getById($this->getParam("classId"));
$fields = $class->getFieldDefinitions();
$availableFields = [];
foreach ($fields as $key => $field) {
$config = null;
$title = $field->getName();
if (method_exists($field, "getTitle")) {
if ($field->getTitle()) {
$title = $field->getTitle();
}
}
if (in_array($field->getFieldType(), $supportedFieldTypes)) {
$availableFields[] = [$field->getName(), $title . "(" . $field->getFieldType() . ")"];
}
}
$mappingStore = [];
for ($i = 0; $i < $cols; $i++) {
$mappedField = null;
if ($availableFields[$i]) {
$mappedField = $availableFields[$i][0];
}
$firstRow = $i;
if (is_array($firstRowData)) {
$firstRow = $firstRowData[$i];
if (strlen($firstRow) > 40) {
$firstRow = substr($firstRow, 0, 40) . "...";
}
}
$mappingStore[] = [
"source" => $i,
"firstRow" => $firstRow,
"target" => $mappedField
];
}
//How many rows
$csv = new SplFileObject($file);
$csv->setFlags(SplFileObject::READ_CSV);
$csv->setCsvControl($dialect->delimiter, $dialect->quotechar, $dialect->escapechar);
$rows = 0;
$nbFields = 0;
foreach ($csv as $fields) {
if (0 === $rows) {
$nbFields = count($fields);
$rows++;
} elseif ($nbFields == count($fields)) {
$rows++;
}
}
$this->_helper->json([
"success" => $success,
"dataPreview" => $data,
"dataFields" => array_keys($data[0]),
"targetFields" => $availableFields,
"mappingStore" => $mappingStore,
"rows" => $rows,
"cols" => $cols
]);
}
$class = Object\ClassDefinition::getById($this->getParam("classId"));
$fields = $class->getFieldDefinitions();
$fields
因此。我想避免覆盖核心文件,而是喜欢用插件扩展它。
最佳答案
您可能必须创建一个插件来覆盖 UI 中的菜单项,以便用您的自定义对象替换标准对象导入。
您将需要创建一个可以扩展标准 ObjectController 的 CustomObjectController。
关于php - Pimcore:如何覆盖内置 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38404784/
我有一个问题要问 pimcore。为例如制定动态路线的可能性有哪些?对于对象详细信息页面? 在我看来,我可以使用自定义路由/静态路由和 Symfony 路由来实现这一点,对吗? 目前我一直在考试类(c
我对学院的问题“哪些数据类型支持数据继承?”感到困惑。在我听完所有视频并阅读有关本章的所有文档后,我仍然在这个问题上出错。 我尝试按照文档中提到的那样使用 Blocks 和 Object Bricks
我对学院的问题“哪些数据类型支持数据继承?”感到困惑。在我听完所有视频并阅读有关本章的所有文档后,我仍然在这个问题上出错。 我尝试按照文档中提到的那样使用 Blocks 和 Object Bricks
我正在 pimcore 中创建一个新站点。有没有办法导出/导入 pimcore 站点的完整数据,以便我可以导出 xml/csv 格式的 pimcore 数据进行必要的更改,然后将其导入回来? 最佳答案
我在 Pimcore 中开发了一个区域,允许我们从列表中选择 Pimcore 对象分类,并将其转换为 HTML 可呈现形式。 我想通过在后端将成功提交的对象捕获为对象来增加此功能,但是我似乎无法使用标
我想在 Pimcore 4.3.1 的对象树上下文菜单中添加一个自定义菜单按钮,例如在复制按钮之前: 我认为最好的解决方案是自定义插件: https://www.pimcore.org/docs/la
您好,我正在研究 pimcore cms。 我在保存对象时调用自定义 API,它有一些自定义错误消息。 现在 pimcore 显示 "Object Could not saved". 如何在错误框中显
我正在使用 Nginx 1.12.1、MYSQL 5.6、Redis 3.2.4、PHP 7.0、PHP 7.0 FPM 安装 Pimcore 5,用户设置为 nginx,并在 Amazon Linu
我正在尝试创建 pimcore 自定义插件。 我浏览了它的文档,到目前为止我已经创建了演示插件并且它工作正常。 现在我想通过插件创建自定义表格并需要将数据存储在自定义表格中,但不知道如何实现? 我知道
我已经通过 Liquid Web 在 VPS 上安装了 Pimcore。我加载了示例数据安装,它也使用夜间构建代码。虽然一切都安装良好,但面向公众的网站看起来很好并且功能良好,管理面板的登录屏幕也是如
我在执行后台进程时遇到问题。该过程是关于向时事通讯订阅者发送电子邮件。当我启动它时,它会返回默认消息,例如“电子邮件正在后台发送等等……”但它永远不会完成。没有订阅者收到电子邮件。 通过挖掘日志文件,
我已经使用 Pimcore 自己的文档教程在 Pimcore 中创建了一个工作流: https://www.pimcore.org/docs/latest/Workflow_Management/Wo
我正在尝试扩展 Pimcore 中的批量对象导入功能,以将用户限制在他们在自定义布局中可用的字段。 我需要覆盖的文件是 pimcore/modules/admin/controllers/Object
我有 Pimcore\Model\Document\Tag\Areablock 和树元素索引表: array(3) { [0]=> array(2) { ["key"]=>
我正在使用 pimcore 3。当发布任何以前的版本时,我需要对不同的类对象进行自定义验证。我需要在不同的插件上实现不同的验证。问题是,如果我在多个插件中覆盖相同的方法,则只有一种覆盖方法有效。这就是
已安装Pimcore5.1、PHP7及扩展、MySQL、Nginx Nginx 虚拟主机配置如下: upstream php-pimcore5 { server 127.0.0.1:9000;
我正在寻找基于 Zend Framework 的 CMS,并且我阅读了有关 Pimcore 的信息。现在我有一些关于它的问题: 有没有人有这个 CMS 的经验? 有哪些(不利)优势? 学习曲线如何?
展望 future ,我正在与 atm 合作的公司希望停止使用各种框架/cms 系统,而只为所有 future 的客户提供一个。 为此,我准备了一个选项列表,并将其缩减为 Pimcore 和 Pyro
我可以通过 Pimcore\Model\Object\Folder::create() 在 pimcore 中生成一个对象文件夹。不幸的是,Asset\Folder 中没有这样的函数。 有谁知道如何在
我刚刚使用命令行设置了 Pimcore, composer create-project pimcore/pimcore ./pimcoretest 所有目录和文件都使用上面的命令设置。 我在 lin
我是一名优秀的程序员,十分优秀!