Динамический getText
Порой нужно в объекте типа getText (см. TSref стр. 9) вставить динамические данные. Например: есть замечательный, скажем так “getText” (поправьте если есть другое обозначение) – DB:
DB: Value from database, syntax is [tablename] :
[uid] : [field]. Any record from a table in TCA can be
selected here. Only marked-deleted records does not
return a value here
С помощью него можно всегда произвести выборку конкретного поля. Но порой идентификатор записи является динамическим (например передается из значения поля, либо url-запросу), что тогда делать? На помощь приходит stdWrap c его помощью можно вставить данные в поле определяющее данные (сорри за тавтологию)
пример:
some.ts.obj = TEXT some.ts.obj{ field = [dynamicData] wrap = {DB:tx_th_allocations:|:name} insertData = 1 }
Если данный объект находиться в контексте объекта CONTENT либо RECORDS, то значение поля [dynamicData] сначала подставляется в wrap объекта и только после этого обрабатывается ф-ей getData, благодаря insertData = 1
более комплексный пример:
some.ts.obj = TEXT some.ts.obj{ stdWrap.cObject = TEXT stdWrap.cObject{ stdWrap.cObject = COA stdWrap.cObject{ 10 = LOAD_REGISTER 10{ myPrettyField.cObject = TEXT myPrettyField.cObject.field = [dynamicData#1] myPrettyTable.cObject = TEXT myPrettyTable.cObject.data = [dynamicData#2] myPrettyFieldTitle.cObject = CONTENT myPrettyFieldTitle.cObject{ ... } } #Вставка 3х динамических элементов 20 = TEXT 20{ value = DB:{register:myPrettyTable}:{register:myPrettyField}:{register:myPrettyFieldTitle} insertData = 1 } } wrap = {|} insertData = 1 } #на этом уровне мы можем пропускать через stdWrap конечный результат crop = 32 | ... }
Данный подход позволяет вставлять любые данные и любое кол-во данных в поле типа getText, это дает очень хорошие решения во многих ситуациях. Данный пример был создан по причине того, что в typo3 есть не понятный глюк связанный с тем что вложенный в CONTENT объект RECORDS не позволяет выводить объекты этого жи типа при дальнейшем выполнение скрипта, данные примеры помогают избежать эти проблемы. Пользуйтесь на здоровье.
Комментарии