Sergey M Nikitin |
21.09.2009 10:35 |
[TS] Динамический 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 не позволяет выводить объекты этого жи типа при дальнейшем выполнение скрипта, данные примеры помогают избежать эти проблемы. Пользуйтесь на здоровье.
|