Powermail: создавать поля из записей в базе данных - PullRequest
0 голосов
/ 11 декабря 2018

Моя проблема:

Мне нужна матрица полей в Powermail:

product_1 - price_1 - number_1
product_2 - price_2 - number_2
product_3 - price_3 - number_3

и так далее.Нет проблем, чтобы создать эти поля вручную, но мне нужно, чтобы он был получен из базы данных.Количество строк зависит от количества записей в базе данных.

есть ли возможность создавать поля "на лету", возможно, с помощью Typoscript или userfunc?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Я бы создал новое поле типа вызова (например) таблицы продуктов.В руководстве есть пример того, как это сделать: 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>

Следующим шагом будет вставка полей - как вы писали - на лету.Так что насчет вставки собственного помощника вида вместо определения жестко закодированного массива в поле Теперь вы можете предварительно заполнить поля значением = "" самостоятельно.

Надеюсь, что это поможет

0 голосов
/ 12 декабря 2018

Вы можете использовать поле TypoScript powermail для генерации кода из опечатки.

Вы также можете использовать свой собственный тип поля, такой как описанный здесь со страницей TSConfig:

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-кода для полей.

...