我在 TypoScript 中使用多个 Symfony 表达式来检查查询参数,如下所示:
[request.getQueryParams()['tx_news_pi1']['news'] > 0]
do something
[END]
只要查询参数存在,这种方法就可以正常工作。如果没有,以下错误消息将写入日志文件:
Unable to get an item on a non-array.
在 PHP 中,我会使用
isset()
来检查查询参数是否存在 - 但我在 TypoScript 中找不到 Symfony 表达式的类似方法。我试过了
[request.getQueryParams()['tx_news_pi1']['news']]
其工作原理相同,意思是:它执行其应该执行的操作,但如果查询参数不存在,则会记录一条错误消息。
TYPO3 中的 Symfony 表达语言有类似
isset()
的东西吗?
我要找的
is_defined()
或isset()
将会按条件返回
[request.getQueryParams()['tx_news_pi1']]
而不是
[request.getQueryParams()['tx_news_pi1']['news']]
在我的用例中,这就足够了。如果您需要更精确(例如,区分同一插件中的不同查询参数), 去
[request.getQueryParams()['tx_news_pi1'] && request.getQueryParams()['tx_news_pi1']['news'] > 0]
该解决方案是作为对 forge.typo3.org 上的 bug 报告的回复提供的
在较新的 TYPO3 版本中:
[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]
do something
[END]
试试这个:
[request.getQueryParams()['tx_news_pi1']['news'] = ]
do something
[END]