外部フォームコンストラクタ呼出でエラー

2021年4月15日 at 19:30

フォーラムの皆さま

 平素は大変お世話になっております。

実案件で、イベントへの申込フォームを外部フォームで開発いたしました。
Expressエンティティは3つ作成
午前の部、午後の部、オンライン集会
午前の部および午後の部は定員に達した時点で申込不可としています。
さらに、上記3つのエンティティから、メールアドレスで検索して、
ヒットした申込者をキャンセル(該当エンティティからデータを削除し、
申込者へキャンセルメールを送信、定員からキャンセル分を差し引く)キャンセル
用フォームも作りました。

キャンセル用フォームでは、コントローラにおいて、
ビュー側のセレクトボックスからPOSTされたエンティティ名を引数にして、

※太字部分が引数
$entity = Express::getObjectByHandle($selectentity);
$list = new \Concrete\Core\Express\EntryList($entity);

としてエントリーリストを取得しようとしています。
そうしますと、キャンセルのフォームは正常に動作しますが、
上記の申込フォームで操作を行ったところ、コンストラクタの
呼出部分で、下記のようなエラーが発生しました。

ちなみに、chomechome_cancel.phpというファイルが、キャンセル用
コントローラのphpファイルです。

キャンセル用のコントローラですでにエントリーリストを呼び出した
ことで、他の3つのファイルからのコンストラクタ引数がnullになって
いるのでしょうか?

また、これに対処する方法はございますでしょうか?
ご教示賜りますと嬉しく存じます。
どうぞよろしくお願い申し上げます。

TypeError thrown with message "Argument 1 passed to Concrete\Core\Express\EntryList::__construct() must be an instance of Concrete\Core\Entity\Express\Entity, null given, called in /virtual/htdocs/cloud_survey/app/application/blocks/external_form/form/controller/chomechome_cancel.php on line 82"

Stacktrace:
#24 TypeError in /virtual/htdocs/cloud_survey/app/concrete/src/Express/EntryList.php:20
#23 Concrete\Core\Express\EntryList:__construct in /virtual/htdocs/cloud_survey/app/application/blocks/external_form/form/controller/yumekana_cancel.php:82
#22 Application\Block\ExternalForm\Form\Controller\YumekanaCancel:action_confirm in /virtual/htdocs/cloud_survey/app/concrete/src/Controller/AbstractController.php:294
#21 call_user_func_array in /virtual/htdocs/cloud_survey/app/concrete/src/Controller/AbstractController.php:294
#20 Concrete\Core\Controller\AbstractController:runAction in /virtual/htdocs/cloud_survey/app/concrete/blocks/external_form/controller.php:97
#19 Concrete\Block\ExternalForm\Controller:runAction in /virtual/htdocs/cloud_survey/app/concrete/src/Page/Controller/PageController.php:311
#18 Concrete\Core\Page\Controller\PageController:validateRequest in /virtual/htdocs/cloud_survey/app/concrete/src/Http/ResponseFactory.php:175
#17 Concrete\Core\Http\ResponseFactory:controller in /virtual/htdocs/cloud_survey/app/concrete/src/Http/ResponseFactory.php:362
#16 Concrete\Core\Http\ResponseFactory:collection in /virtual/htdocs/cloud_survey/app/concrete/src/Http/DefaultDispatcher.php:130
#15 Concrete\Core\Http\DefaultDispatcher:handleDispatch in /virtual/htdocs/cloud_survey/app/concrete/src/Http/DefaultDispatcher.php:58
#14 Concrete\Core\Http\DefaultDispatcher:dispatch in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/DispatcherDelegate.php:39
#13 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/ThumbnailMiddleware.php:76
#12 Concrete\Core\Http\Middleware\ThumbnailMiddleware:process in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#11 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/FrameOptionsMiddleware.php:39
#10 Concrete\Core\Http\Middleware\FrameOptionsMiddleware:process in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#9 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/CookieMiddleware.php:35
#8 Concrete\Core\Http\Middleware\CookieMiddleware:process in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#7 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/ApplicationMiddleware.php:29
#6 Concrete\Core\Http\Middleware\ApplicationMiddleware:process in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#5 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /virtual/htdocs/cloud_survey/app/concrete/src/Http/Middleware/MiddlewareStack.php:86
#4 Concrete\Core\Http\Middleware\MiddlewareStack:process in /virtual/htdocs/cloud_survey/app/concrete/src/Http/DefaultServer.php:85
#3 Concrete\Core\Http\DefaultServer:handleRequest in /virtual/htdocs/cloud_survey/app/concrete/src/Foundation/Runtime/Run/DefaultRunner.php:128
#2 Concrete\Core\Foundation\Runtime\Run\DefaultRunner:run in /virtual/htdocs/cloud_survey/app/concrete/src/Foundation/Runtime/DefaultRuntime.php:102
#1 Concrete\Core\Foundation\Runtime\DefaultRuntime:run in /virtual/htdocs/cloud_survey/app/concrete/dispatcher.php:45
#0 require in /virtual/htdocs/cloud_survey/app/index.php:3


【開発環境】
# concrete5 Version
Core Version - 8.5.2
Version Installed - 8.5.2
Database Version - 20190925072210

# Database Information
Version: 5.7.22
SQL Mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# concrete5 Packages
Bootstrap4 Website Theme (1.0.0), CSV User Import & Export (0.1.1), Honest Websites Back To Top (1.1.0), Login/Logout Link (1.0), Manual Nav (2.3.3), Migration Tool (0.9.1)

# concrete5 Overrides
blocks/external_form/form/yumekana_online.php, blocks/external_form/form/yumekana_zam.php, blocks/external_form/form/yumekana_zpm.php, blocks/external_form/form/controller/yumekana_online.php, blocks/external_form/form/controller/yumekana_zam.php, blocks/external_form/form/controller/yumekana_zpm.php, blocks/external_form/form/controller/yumekana_cancel.php, blocks/external_form/form/controller, blocks/external_form/form/yumekana_cancel.php, blocks/external_form/form, blocks/external_form, mail/mail_send_am.php, mail/mail_send_pm.php, mail/mail_send_online.php, themes/tkpsurvey/default.php, themes/tkpsurvey/description.txt, themes/tkpsurvey/form.php, themes/tkpsurvey/thumbnail.png, themes/tkpsurvey/css/custom.css, themes/tkpsurvey/css, themes/tkpsurvey/elements/footer-form.php, themes/tkpsurvey/elements/header_top-form.php, themes/tkpsurvey/elements, themes/tkpsurvey/js/custom.js, themes/tkpsurvey/js, themes/tkpsurvey/__backup/yumekana_online.backup, themes/tkpsurvey/__backup/yumekana_zam.backup, themes/tkpsurvey/__backup/yumekana_zpm.backup, themes/tkpsurvey/__backup/controller/yumekana_online.backup, themes/tkpsurvey/__backup/controller/yumekana_zam.backup, themes/tkpsurvey/__backup/controller/yumekana_zpm.backup, themes/tkpsurvey/__backup/controller, themes/tkpsurvey/__backup, themes/tkpsurvey

# concrete5 Cache Settings
Block Cache - Off
Overrides Cache - Off
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache

# Server API
apache2handler

# PHP Version
7.3.15

# PHP Extensions
apache2handler, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, imap, intl, json, ldap, libxml, mbstring, mcrypt, mysqli, mysqlnd, odbc, openssl, pcre, PDO, pdo_mysql, PDO_ODBC, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, recode, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib

# PHP Settings
max_execution_time - 3600
log_errors_max_len - 4096
max_file_uploads - 100
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 384M
post_max_size - 384M
upload_max_filesize - 10M
ldap.max_links - Unlimited
mbstring.regex_stack_limit - 100000
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
odbc.max_links - Unlimited
odbc.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
pgsql.max_links - Unlimited
pgsql.max_persistent - Unlimited
session.cache_limiter - no value
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
opcache.max_accelerated_files - 4000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5

タグ:

Re: 外部フォームコンストラクタ呼出でエラー

2021年4月16日 at 10:49
おはようございます。

 いつも暖かいご支援を賜りまして、ありがとうございます。
昨日投稿させていただきました、質問でございますが、その後の
調査で原因が判明いたしましたので、ご報告いたします。

【エラーの原因】
 ・1つの新規ページに、午前の部申込用外部フォームと、キャンセル用
  外部フォームを2つ設置していた

 ページを精査したところ、デザイン画面で、午前の部申込フォームと
キャンセル用フォーム2つの外部フォームが配置されていることがわかり、
キャンセル用外部フォームを削除したところ、正常に動作しました。

実際の公開ページでは気づきませんでしたが、私のオペレーションミスに
起因するものと考えております。
大変お騒がせをいたしました。

 その後、4つのフォームは正常に動作しております。
ありがとうございました。