目前,我正在研究drupal 8的导入模块,我是这个cms的初学者,并且大多数时候我会按照指南,教程,其他类似模块的代码以及文档来创建代码。当我测试我的模块时(通过“导入”空文件),我得到如下错误和警告:
错误:在Drupal \ customimport \ Form \ CustomImport-> submitForm()(模块/custom/customimport/src/Form/CustomImport.php的第82行)中,调用成员函数setPermanent()为null。
注意:未初始化的字符串偏移量:Drupal \ customimport \ Form \ CustomImport-> submitForm()中为0(模块/custom/customimport/src/Form/CustomImport.php的第80行)。
我看到两者都与SubmitForm()方法有关。根据互联网上的指南,我看到这种方法的实现方式应该没有问题,甚至其他模块也使用与我的方法非常相似的代码。这意味着我的方法的逻辑错误无法找到,可能是由于缺乏对drupal 8的深入了解。这是我的SubmitForm()方法的代码:
/**
* {@inheritDoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$csv_file = $form_state->getValue('csv_file');
$file = File::load($csv_file[0]);
$file->setPermanent();
$file->save();
$data = $this->csvImport($file->getFileUri(), ',');
foreach ($data as $row) {
$operations[] = ['\Drupal\customimport\addImportContent::addImportContentItem', [$row]];
}
$batch = array(
'title' => t('Importing Data...'),
'operations' => $operations,
'init_message' => t('Import is starting.'),
'finished' => '\Drupal\customimport\addImportContent::addImportContentItemCallback',
);
batch_set($batch);
}
为解决这个问题,我已经搜索了一些指南,教程和其他模块,并且我在这里写这是寻求帮助的最后手段。
答案 0 :(得分:0)
$ csv_file似乎是一个空数组,因此您应该在使用变量$ csv_file之前添加一些检查代码。