TYPO3 Symfony 表达式:isset() 用于查询参数?

问题描述 投票:0回答:3

我在 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()
的东西吗?

symfony typo3 typoscript
3个回答
4
投票

我要找的

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 报告的回复提供的


0
投票

在较新的 TYPO3 版本中:

[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]
   do something
[END]

-1
投票

试试这个:

[request.getQueryParams()['tx_news_pi1']['news'] = ]
  do something
[END]
© www.soinside.com 2019 - 2024. All rights reserved.