0

私は Typo3/TypoScript にとても慣れていないので、TypoScript の sql-statement の結果を php 関数に渡すことができるかどうか、またどのようにできるか疑問に思いました。

これまでuserFuncを管理してきましたが、残りと混乱しています。これが私の試みです:

temp.pidList = CONTENT
temp.pidList {
  table = tx_eepcollect_sessions
  #table = tt_content
  select {
    pidInList < plugin.tx_eepcollect_pi1.pid_list
   where {
      stdWrap.cObject = TEXT
      stdWrap.cObject {
        data = global : _COOKIE | tx_eepcollect_pi1
        wrap = ses_id='|'
      }
    }
  }
  renderObj = COA
  renderObj {
    10 = TEXT
    10.field = ses_data
    #30 = TEXT
    #30.data = debug:data
  }
}


includeLibs.user_idList = fileadmin/services/user_IdList.php
temp.ListOfIds = USER
temp.ListOfIds.userFunc = user_IdList->get_IdList
#temp.pidList = TEXT
#temp.pidList = {"1275":{"id":"1275","tx_eepcollect_pi1":{"prozess":"add","pid":"1275","ctrl":"1360858765"},"cHash":"e90b62584f3f0e4f71bf1100faf39d83"}}
temp.ListOfIds.userFunc.jsonList < temp.pidList


temp.mainContent = COA_INT
temp.mainContent.10 = TEXT
temp.mainContent.10.stdWrap.cObject < temp.ListOfIds

出力は多くのものの配列ですが、データベースクエリの結果ではありません.

4

1 に答える 1

1

TypoScript はプログラミング言語ではないため、実行されることはありません。TS は Core の一連の命令と考える必要があります。したがって、次の行:

temp.ListOfIds.userFunc.jsonList < temp.pidList

プログラミング言語から期待されるように、 temp.pidList の結果を temp.ListOfIds.userFunc.jsonList に入れません。一連の命令をコピーするだけなので、最終的には次の構造なります

temp.ListOfIds = USER
temp.ListOfIds.userFunc = user_IdList->get_IdList
temp.ListOfIds.userFunc.jsonList = CONTENT
temp.ListOfIds.userFunc.jsonList.table = tx_eepcollect_sessions
[...]

jsonListはカスタム プロパティであるため、次の方法で stdWrap を取得する必要があります。

タイポスクリプト

temp.ListOfIds.userFunc.jsonList.cObject < temp.pidList

PHP

$jsonList = $this->cObj->stdWrap($conf['jsonList'], $conf['jsonList.']);

$content$confの 2 つのパラメーターを使用して、クラスuser_IdListのメソッドget_IdListから呼び出すと仮定します。

追加手段として、キックスターターエクステンションビルダーでエクステンションとして作ることができるので、設定作業がしやすくなります。

もう 1 つのことは、コードに潜在的な SQL インジェクションの脆弱性があることです。

   where {
      stdWrap.cObject = TEXT
      stdWrap.cObject {
        data = global : _COOKIE | tx_eepcollect_pi1
        wrap = ses_id='|'
      }
    }

したがって、マーカーについて読むことを検討してください。

于 2013-02-15T17:59:12.977 に答える