Powermail:从数据库中的条目创建字段
Powermail: create fields from entries in database
我的问题:
我需要 Powermail 中的字段矩阵:
product_1 - price_1 - number_1
product_2 - price_2 - number_2
product_3 - price_3 - number_3
等等。手动创建这个字段没问题,但我需要它从数据库中派生。行数取决于数据库中的条目数。
是否可以创建字段 "on the fly",可能是通过打字错误或 userfunc?
谢谢!
您可以使用 powermail 的 TypoScript
字段从拼写错误中生成代码。
您也可以使用自己的字段类型,如 TSConfig 页面所述 here:
tx_powermail.flexForm.type.addFieldOptions.new = New Field
# The label could also be written with LLL: to localize the label
# Example to grab a value from locallang.xml or locallang.xlf
#tx_powermail.flexForm.type.addFieldOptions.new = LLL:EXT:ext/Resources/Private/Language/locallang.xlf:label
# Tell powermail that the new fieldtype will transmit anything else then a string (0:string, 1:array, 2:date, 3:file)
# Example for dataType array
#tx_powermail.flexForm.type.addFieldOptions.new.dataType = 1
# The new field is not just a "show some text" field. It's a field where the user can send values and powermail stores the values?
# You can tell powermail that this new field should be exportable in backend module and via CommandController
#tx_powermail.flexForm.type.addFieldOptions.new.export = 1
new
是字段标识。 Powermail 默认搜索带有标识符名称的部分,例如New.html
.
现在您可以使用 ViewHelper 获取数据并为字段创建 html。
我会创建一个新的字段类型并称之为(例如)productsheet。在手册中有一个如何做的例子:https://docs.typo3.org/typo3cms/extensions/powermail/ForDevelopers/AddNewFields/Index.html
这里是新字段的两个示例页面 TSConfig 行:
# Add new fields
tx_powermail.flexForm.type.addFieldOptions.productsheet = Product Fields
tx_powermail.flexForm.type.addFieldOptions.productsheet.dataType = 1
这里有一个示例 Productsheet.html 部分文件:
{namespace vh=In2code\Powermail\ViewHelpers}
<h2><vh:string.escapeLabels>{field.title}</vh:string.escapeLabels><f:if condition="{field.mandatory}"><span class="mandatory">*</span></f:if></h2>
<table>
<thead>
<tr>
<th scope="col">Menge</th>
<th scope="col">Artikel Nr.</th>
<th scope="col">Bezeichnung</th>
<th scope="col">Preis Fr./m</th>
</tr>
</thead>
<tbody>
<f:for each="{0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10}" as="key">
<tr>
<td>
<f:form.textfield type="number" class="mdl-textfield__input " name="field[{field.marker}][amount_{key}]" value="" />
</td>
<td>
<f:form.textfield class="mdl-textfield__input " name="field[{field.marker}][article_no_{key}]" value="" />
</td>
<td>
<f:form.textfield class="mdl-textfield__input " name="field[{field.marker}][description_{key}]" value="" />
</td>
<td>
<f:form.textfield class="mdl-textfield__input " name="field[{field.marker}][price_{key}]" value="" />
</td>
</tr>
</f:for>
</tbody>
</table>
下一步将是按您所写的那样即时插入字段。那么插入一个自己的 viewhelper 而不是在
现在您可以自己预填 value="" 字段了。
希望对您有所帮助
我的问题:
我需要 Powermail 中的字段矩阵:
product_1 - price_1 - number_1
product_2 - price_2 - number_2
product_3 - price_3 - number_3
等等。手动创建这个字段没问题,但我需要它从数据库中派生。行数取决于数据库中的条目数。
是否可以创建字段 "on the fly",可能是通过打字错误或 userfunc?
谢谢!
您可以使用 powermail 的 TypoScript
字段从拼写错误中生成代码。
您也可以使用自己的字段类型,如 TSConfig 页面所述 here:
tx_powermail.flexForm.type.addFieldOptions.new = New Field
# The label could also be written with LLL: to localize the label
# Example to grab a value from locallang.xml or locallang.xlf
#tx_powermail.flexForm.type.addFieldOptions.new = LLL:EXT:ext/Resources/Private/Language/locallang.xlf:label
# Tell powermail that the new fieldtype will transmit anything else then a string (0:string, 1:array, 2:date, 3:file)
# Example for dataType array
#tx_powermail.flexForm.type.addFieldOptions.new.dataType = 1
# The new field is not just a "show some text" field. It's a field where the user can send values and powermail stores the values?
# You can tell powermail that this new field should be exportable in backend module and via CommandController
#tx_powermail.flexForm.type.addFieldOptions.new.export = 1
new
是字段标识。 Powermail 默认搜索带有标识符名称的部分,例如New.html
.
现在您可以使用 ViewHelper 获取数据并为字段创建 html。
我会创建一个新的字段类型并称之为(例如)productsheet。在手册中有一个如何做的例子:https://docs.typo3.org/typo3cms/extensions/powermail/ForDevelopers/AddNewFields/Index.html
这里是新字段的两个示例页面 TSConfig 行:
# Add new fields
tx_powermail.flexForm.type.addFieldOptions.productsheet = Product Fields
tx_powermail.flexForm.type.addFieldOptions.productsheet.dataType = 1
这里有一个示例 Productsheet.html 部分文件:
{namespace vh=In2code\Powermail\ViewHelpers}
<h2><vh:string.escapeLabels>{field.title}</vh:string.escapeLabels><f:if condition="{field.mandatory}"><span class="mandatory">*</span></f:if></h2>
<table>
<thead>
<tr>
<th scope="col">Menge</th>
<th scope="col">Artikel Nr.</th>
<th scope="col">Bezeichnung</th>
<th scope="col">Preis Fr./m</th>
</tr>
</thead>
<tbody>
<f:for each="{0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10}" as="key">
<tr>
<td>
<f:form.textfield type="number" class="mdl-textfield__input " name="field[{field.marker}][amount_{key}]" value="" />
</td>
<td>
<f:form.textfield class="mdl-textfield__input " name="field[{field.marker}][article_no_{key}]" value="" />
</td>
<td>
<f:form.textfield class="mdl-textfield__input " name="field[{field.marker}][description_{key}]" value="" />
</td>
<td>
<f:form.textfield class="mdl-textfield__input " name="field[{field.marker}][price_{key}]" value="" />
</td>
</tr>
</f:for>
</tbody>
</table>
下一步将是按您所写的那样即时插入字段。那么插入一个自己的 viewhelper 而不是在 现在您可以自己预填 value="" 字段了。
希望对您有所帮助