I just upgraded a TYPO3 extension with cal and had an exception. This was resolved by changing the constant:
plugin.tx_cal_controller.view.list.listTemplate = FILE:EXT:somextkey/somepath/list.tmpl
to
plugin.tx_cal_controller.view.list.listTemplate = EXT:someextkey/somepath/list.tmpl
While the latter is how it is documented in the cal docs and should have been used in the first place, this is an easy mistake to make, because often FILE:EXT
is actually used to reference files. I don't know why this worked in TYPO3 8 and not in TYPO3 9.
The part that broke was
$absPath = $GLOBALS['TSFE']->tmpl->getFileName($path);
with $path being the path as defined by the constant.
Also, on this page TypoScript Syntax: Includes both variants are used:
and
Is there an easy to remember rule what is to be used when, is the variant "FILE:EXT" deprecated?
FILE:EXT:
is only for inclusion because there we have also DIR:EXT:
. For templates you always need EXT:
. The only other exception is with languages: LLL:EXT:
. It is like this since TYPO3 3.x.