【问题标题】:Two TYPO3 globalVar are the same两个TYPO3 globalVar是一样的
【发布时间】:2012-10-05 08:43:25
【问题描述】:

我在 TypoScript 中有这种情况:

[globalVar = TSFE:fe_user|sesData|get_car = TSFE:fe_user|sesData|return_car]
   # Do nothing 
[else]
   plugin.Tx_Formhandler.settings.predef.formhandler-multistep-forms-rent-a-car {
      markers.master_input_price_out_town1 = TEXT
      markers.master_input_price_out_town1.value = Zwrot samochodu:

      markers.master_input_price_out_town2 = CONTENT
      markers.master_input_price_out_town2 {
        table = tx_pricelist_additional_price
        select {
          pidInList = 44
          orderBy = uid
          selectFields = uid, return_another_department
          # possible conditions
           where = ( hidden='0' AND deleted='0')
        } 
        renderObj = COA
        renderObj {
          #value  
          1 = TEXT
          1.insertData = 1 
          1.data = field: return_another_department      
          1.stdWrap.prioriCalc = 1
          1.wrap = <div>|</div>
        }
      }
   }
[global]

因为在 TS 中没有像 != 这样的想法,所以我使用 [else] 条件,但是即使 get_carreturn_car 相同,也会执行 CODE

我做错了什么?

【问题讨论】:

  • 我认为您不能将动态值作为第二个参数(即在运算符“=”之后)。换句话说,它可能只能是“statitc”字符串,可以选择使用通配符 (*)。

标签: conditional-statements typo3 typoscript


【解决方案1】:

TypoScript 不应被视为高级编程语言,因此尝试准备越来越复杂的条件将很快导致您走入死胡同。

虽然您没有指定 CODEs 任务是什么,但我建议您考虑编写自定义扩展,无论如何,如果不需要,您最好使用 localconf.php 至少在 localconf.php 中编写自定义条件@ 所以你可以使用更复杂的运算符,check the doc, at bottom

【讨论】:

  • 我不会考虑为此使用扩展名,因为在我看来这将是矫枉过正。 localconf.php 中的自定义函数是一个很好的解决方案,所以我为此 +1。
  • @cascaval,事实上这只是建议,正如我所写的,我不知道 CODE 是什么意思......但是,每个 TYPO3 实例都应该有小的 general 扩展名,开发人员可以在其中放置他的 PHP 小片段反而浪费时间意识到 TypoScript 不是一种编程语言(也不是它的模拟),它只是一个配置数组
  • Biesior - 我粘贴了整个代码 - 它用于 Formhandler 扩展
  • @Adrian 正如 cascaval 所写,在这种情况下使用 userFunc 作为条件就足够了,因为您只需要重新配置表单处理程序
  • @biesior,我同意你的观点,TypoScript 不是一种编程语言,因此不适合一些高级的东西。我的意思是,当 localconf.php 中的一个函数就足够时,在我看来似乎没有必要编写扩展。
【解决方案2】:

我以其他方式制作了这个:

[globalString = TSFE:fe_user|sesData|get_car = *] && [globalString = TSFE:fe_user|sesData|return_car = *] 
   CODE
[global]

[globalVar = TSFE:fe_user|sesData|get_car = City] && [globalVar = TSFE:fe_user|sesData|return_car = City] 
   CODE for "Do nothing"
[global]

感谢您的建议!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多