エクスプレスフォームの[csvに出力]でエラー

8.5.7 から 9.1.2 へアップデートし、エクスプレスフォームの[CSVに出力]を動作確認しています。
PHP 7.4.x では問題ないのですが、PHP 8.0.x では生成された CSV ファイルにエントリーはなく、代わりにエラー画面と思しきソースコードが出力されています。

<!DOCTYPE html><!--
Whoops\Exception\ErrorException: Undefined array key &quot;catalogue_yakka&quot; in file インストールディレクトリ/concrete/src/Express/Export/EntryList/CsvWriter.php on line 103
Stack trace:
  1. Whoops\Exception\ErrorException-&gt;() インストール/concrete/src/Express/Export/EntryList/CsvWriter.php:103
  2. Whoops\Run-&gt;handleError() インストールディレクトリ/concrete/src/Express/Export/EntryList/CsvWriter.php:103
  3. Concrete\Core\Express\Export\EntryList\CsvWriter-&gt;orderedEntry() インストールディレクトリ/concrete/src/Express/Export/EntryList/CsvWriter.php:81
  4. Concrete\Core\Express\Export\EntryList\CsvWriter-&gt;projectList() インストールディレクトリ/concrete/vendor/league/csv/src/Writer.php:117
  5. League\Csv\Writer-&gt;insertAll() インストールディレクトリ/concrete/src/Express/Export/EntryList/CsvWriter.php:65
  6. Concrete\Core\Express\Export\EntryList\CsvWriter-&gt;insertEntryList() インストールディレクトリ/concrete/src/Controller/Traits/DashboardExpressEntryListTrait.php:277
  7. Concrete\Controller\SinglePage\Dashboard\Reports\Forms-&gt;Concrete\Core\Controller\Traits\{closure}() インストールディレクトリ/concrete/vendor/symfony/http-foundation/StreamedResponse.php:109
  8. Symfony\Component\HttpFoundation\StreamedResponse-&gt;sendContent() インストールディレクトリ/concrete/vendor/symfony/http-foundation/Response.php:394
  9. Symfony\Component\HttpFoundation\Response-&gt;send() インストールディレクトリ/concrete/src/Foundation/Runtime/DefaultRuntime.php:118
 10. Concrete\Core\Foundation\Runtime\DefaultRuntime-&gt;sendResponse() インストールディレクトリ/concrete/src/Foundation/Runtime/DefaultRuntime.php:105
 11. Concrete\Core\Foundation\Runtime\DefaultRuntime-&gt;run() インストールディレクトリ/concrete/dispatcher.php:45
 12. require() インストールディレクトリ/index.php:3
--><html>
  <head>
    <meta charset="utf-8">
    <meta name="robots" content="noindex
    <meta name="viewport" content="width=device-width
    <title>Concrete CMS has encountered an issue.</title>

以下略

思いつくところを試してみましたが変化はないようです。

A. [コンテンツのインデックス再作成]タスクを実行
concrete/bin/concrete task:reindex-content --verbose --clear --rebuild express

B. オーバーライドファイルを削除

フォームの[必須]を[*]に変更
application/elements/form/bootstrap5.php

管理者宛メールの文面を変更
application/mail/block_express_form_submission.php

どのような原因が考えられますでしょうか。

Concrete CMS バージョン
9.1.2

PHP バージョン
8.0.x

サーバー
エックスサーバー

本件ですが以下の 2 つの条件を満たすとエラーを生じるようです。

  1. データオブジェクトに[オプションリスト]タイプの属性が登録されている
  2. 1 がフォームに追加されていない(値がない)

例えば 1 つのデータオブジェクトに表示用、編集用など 2 つのフォームがあり、どちらか一方にのみ[オプションリスト]タイプの属性が追加されているといった状況で問題が起きると考えられます。

1 Like

@Jun_22 ありがとうございます。
遅くなりましたが、私の方でも再現できたので、バグ報告しました。

本件承知しました。
ご対応いただきましてありがとうございました。

@Jun_22
修正パッチが GitHub に適用されたようです。

急ぎであれば、パッチの修正も簡単なので適用してみてください。

次期バージョンで治る予定です

ありがとうございます

エントリーをエクスポートできるようになりました。
ありがとうございました。

1 Like