TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-109167-1773174150:
|
||||
|
||||
=========================================================
|
||||
Feature: #109167 - Improved exceptions in Fluid templates
|
||||
=========================================================
|
||||
|
||||
See :issue:`109167`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In an effort to simplify debugging Fluid templates, TYPO3 14 enhances
|
||||
exception messages thrown by Fluid in several ways:
|
||||
|
||||
* Templates that contain invalid syntax or refer to undeclared ViewHelper
|
||||
arguments now contain both the full path to the template file and the
|
||||
affected line number in that file.
|
||||
* Most ViewHelper-related error messages now contain the full path to the
|
||||
template file.
|
||||
* Fluid Standalone 5.2 (also backported to Fluid 4.6) introduces more granular
|
||||
exception classes that can be used by ViewHelpers to classify runtime errors.
|
||||
These classifications are also part of the error message.
|
||||
* When a referenced Fluid template cannot be found, the exception message
|
||||
contains a full list of the candidates that have been tried. Also,
|
||||
the exception contains the context in which the template file is missing
|
||||
(for example `FLUIDTEMPLATE` or `PAGEVIEW`).
|
||||
|
||||
In order for this to work with custom ViewHelper implementations, ViewHelpers
|
||||
need to use the base ViewHelper exception class or one of its child classes:
|
||||
|
||||
* :php:`\TYPO3Fluid\Fluid\Core\ViewHelper\Exception` for general exceptions
|
||||
* :php:`\TYPO3Fluid\Fluid\Core\ViewHelper\InvalidArgumentException` for
|
||||
general exceptions related to ViewHelper arguments
|
||||
* :php:`\TYPO3Fluid\Fluid\Core\ViewHelper\InvalidArgumentValueException` for
|
||||
invalid ViewHelper argument values (e.g. wrong type, empty, invalid format)
|
||||
* :php:`\TYPO3Fluid\Fluid\Core\ViewHelper\MissingArgumentException` if
|
||||
a required ViewHelper argument has not been supplied
|
||||
* :php:`\TYPO3Fluid\Fluid\Core\ViewHelper\UndeclaredArgumentException` if
|
||||
a ViewHelper is called with an argument that has not been defined
|
||||
|
||||
If any of these exception classes are used in a ViewHelper, Fluid's internal
|
||||
error handler automatically adds the full path to the current template file
|
||||
to the exception. It is not necessary for ViewHelpers to do this themselves.
|
||||
Note that this leads to nested exceptions. The original exception can be
|
||||
accessed via :php:`$e->getPrevious()`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. code-block:: plaintext
|
||||
:caption: Parse error in template
|
||||
|
||||
#1238169398 TYPO3Fluid\Fluid\Core\Parser\Exception
|
||||
Fluid parse error in template /var/www/html/typo3conf/ext/theme/Resources/Private/Components/Test/Test.fluid.html, line 11 at character 15.
|
||||
Error: Not all tags were closed! (error code 1238169398). Template source chunk: test
|
||||
|
||||
.. code-block:: plaintext
|
||||
:caption: Undeclared ViewHelper argument
|
||||
|
||||
#1773227091 TYPO3Fluid\Fluid\Core\ViewHelper\Exception
|
||||
TYPO3Fluid\Fluid\Core\ViewHelper\UndeclaredArgumentException in /var/www/html/typo3conf/ext/theme/Resources/Private/Components/Test/Test.fluid.html:
|
||||
Undeclared arguments passed to ViewHelper TYPO3Fluid\Fluid\ViewHelpers\Format\TrimViewHelper: foo. Valid arguments are: value, characters, side
|
||||
(/var/www/html/vendor/typo3fluid/fluid/src/Core/ViewHelper/AbstractViewHelper.php:314)
|
||||
|
||||
.. code-block:: plaintext
|
||||
:caption: Custom validation by ViewHelper implementation
|
||||
|
||||
#1669191560 TYPO3Fluid\Fluid\Core\ViewHelper\Exception
|
||||
TYPO3Fluid\Fluid\Core\ViewHelper\InvalidArgumentValueException in /var/www/html/typo3conf/ext/theme/Resources/Private/Components/Test/Test.fluid.html:
|
||||
The side "none" supplied to Fluid's format.trim ViewHelper is not supported.
|
||||
(/var/www/html/vendor/typo3fluid/fluid/src/ViewHelpers/Format/TrimViewHelper.php:118)
|
||||
|
||||
.. code-block:: plaintext
|
||||
:caption: Missing template file for PAGEVIEW
|
||||
|
||||
#1742058289 TYPO3Fluid\Fluid\View\Exception\InvalidTemplateResourceException
|
||||
PAGEVIEW TypoScript object: Failed to resolve a template file for page layout "default". See also: https://docs.typo3.org/permalink/t3tsref:cobj-pageview@14.2.
|
||||
The following paths were checked:
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default/default.fluid.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default/default.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default/default",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default/Default.fluid.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default/Default.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default/Default",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/default.fluid.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/default.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/default",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default.fluid.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default.html",
|
||||
"/var/www/html/typo3conf/ext/dummy/Resources/Private/Templates/Pages/Default"
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
To make debugging easier, exceptions that originate from Fluid templates now
|
||||
contain more context, such as the full path to the template file.
|
||||
|
||||
.. index:: Fluid, ext:fluid
|
||||
Reference in New Issue
Block a user