错误:在null上调用成员函数和警告:未初始化的字符串偏移量

时间:2018-08-08 08:49:46

标签: php forms drupal-8

目前,我正在研究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);


}

为解决这个问题,我已经搜索了一些指南,教程和其他模块,并且我在这里写这是寻求帮助的最后手段。

1 个答案:

答案 0 :(得分:0)

$ csv_file似乎是一个空数组,因此您应该在使用变量$ csv_file之前添加一些检查代码。