[TYPO3-english] Layouts for partials or any other way to avoid copy-paste in templates
bernd wilke
t3ng at bernd-wilke.net
Fri Aug 14 14:31:25 CEST 2015
Am 14.08.15 um 12:18 schrieb Viktor Livakivskyi:
> Hi, Bernd.
>
> Thank you for your answer.
>
>> 3. you can call each section within a partial individually
> Yes, and no =) I can call only section of this or other partial from
> within a partial. But I can't call a section of a template from a
> partial. Or I just didn't find, how I can do this.
yes
>> < f:render partial="inputfields.html" section="input"
>> arguments="{fieldname:'surname',label:'Surname',required:1,errtxt:'enter
>> your surname',data:user.surname}" />
> And that's what I'm, trying to avoid, because with every new
> individualization there will be more and more parameters or possible
> values of parameters, like "isStaticInfoZone: 1,
> staticInfoCountrySelectorId: 'siCountry', preSelected: 'DE', etc..."
that is a question what you can put into one parameter.
if you have a HTML-block before each input-tag you may render it inside
the input-section or render it outside (individually) and drop the
complete HTML into the input section. you also may provide individual
parameters to each attribute or pass all the attributes (and values) in
one string:
<section name="input">
<input class="{class}" id="{id}" onChange="{onChange}" value="{value}"
... /></section>
<section name="input2">
<input {attributes} />
</section>
<f:render section="input"
arguments="{class:'wide',id:{fieldname},onChange:'alert(\'wow\');',value:10}"
/>
<f:render sectio="input2" arguments="{attributes:'class=\"wide\"
id=\"{fieldname}\" onChange=\"alert(\'wow\');\" value=\"10\"'}" />
<f:render sectio="input2" arguments="{attributes:'class=\"narrow\"
id=\"{fieldname2}\"'}" />
> Currently I'm doing it almost as you proposed:
> RegistrationForm.html
> <f:render partial="Field" section="Main" arguments="{field: 'city',
> type: 'Textfield'}" />
> <f:render partial="Field" section="Main" arguments="{field:
> 'staticInfoCountry', type: 'SelectCountry', selected:
> '{user.staticInfoCountry}'}" />
>
> Field.html
> <f:section name="Main">
> ---all the common stuff comes here---
> <f:render section="{type}" arguments="{field: '{field}', values:
> '{values}', selected: '{selected}'}" />
> </f:section>
>
> <f:section name="Textfield">
> <f:form.textfield property="{field}" class="form__field
> form__field_input" id="field-{field}" />
> </f:section>
>
> <f:section name="SelectCountry">
> <f:if condition="{selected}">
> <f:then>
> <register:form.SelectStaticCountries property="{field}"
> id="sfrCountry" value="{selected}" optionLabelField="cnShortEn"
> class="form__field form__field_select" />
> </f:then>
> <f:else>
> <register:form.SelectStaticCountries property="{field}"
> id="sfrCountry" value="DE" optionLabelField="cnShortEn"
> class="form__field form__field_select" />
> </f:else>
> </f:if>
> </f:section>
>
> ...
I might change it a little bit:
call the section directly
<f:render partial="Field" section="Textfield" arguments="{field:'city'}" />
and inside that section make a common call to globals:
<f:section name="Textfield">
<f:render section="globalStuff" arguments="{_all}" />
<f:form.textfield property="{field}" class="form__field
form__field_input" id="field-{field}" />
</f:section>
so the calls will get a little bit slimmer
>
> So, for each field I either create a special section in partial or add
> some parameter. But I still don't like this solution, because it forces
> me to hold specific form adjustments not inside the form template
> itself, but in partial (or other partials).
> In other words: if I want to reuse same partial for other forms with
> same field layout but their specific adjustments, I'll have to either
> invent more parameters to pass to Field partial or create more sections.
> And these specific parameters or sections will be used only once.
for all output you have to define some HTML, and so you may use it only
once it has to be defined. you just can consider where you want that
unique definition: in your main-template or in a section inside a partial.
the whole art about is to identify the common parts and the individual
parts and decide what all those individual parts have in common. :)
bernd
--
http://www.pi-phi.de/cheatsheet.html
More information about the TYPO3-english
mailing list