tag:help.rocksolidthemes.com,2012-07-23:/discussions/contao/92177-verwendung-custom-elements-dependson-innerhalb-list
RockSolid Themes: Discussion
2022-10-03T09:11:36Z
tag:help.rocksolidthemes.com,2012-07-23:Comment/55934822
2022-10-01T17:59:45Z
2022-10-01T17:59:45Z
Verwendung: Custom Elements: 'dependsOn' innerhalb 'list'
<div><p>Produkt: Custom Elements Contao<br>
Contao-Version: 4.19</p>
<p>Hallo Rocksolid-Team,</p>
<p>ich möchte für TAO ein komplexes Inhaltselement mit den RSCE erstellen. Dies soll auf der Basis des "Boxes"-Elements aufgebaut werden. Allerdings sollen die Boxen eine unterschiedliche Inhaltsstruktur nach Wahl haben können.</p>
<p>Die Auswahl der 'inputType' per 'select' über 'dependsOn' klappt auch grundsätzlich.<br>
Sobald ich die Blocks aber in ein 'list' packe, wird das 'dependsOn' nicht mehr ausgewertet.</p>
<p>Das erscheint mir auch logisch, da durch 'list' eine Array-Ebene hinzukommt.</p>
<p>Die Frage ist also: Wie muss 'field' lauten, damit 'value' ausgewertet wird?<br></p>
<pre>
<code>...
'dependsOn' => ['field' => ??? ,'value' => '1'],
...</code>
</pre>
Das Schema soll wie folgt aussehen (es gibt mehr Blocktypen und die einzelnen Blocks sind auch komplexer aufgebaut):
<pre>
<code>return [
'label' => ['Unterschiedliche Blocks', ''],
'types' => ['content'],
'standardFields' => ['cssID'],
'fields' => [
'blocks' => [
'label' => ['Blocks', ''],
'elementLabel' => '%s. Block',
'inputType' => 'list',
'minItems' => 3,
'maxItems' => 3,
'fields' => [
'blockType' => [
'label' => ['Dieser Block ist ein:', ''],
'inputType' => 'select',
'options' => [
'0' => 'Bitte auswählen',
'1' => 'Textblock',
'2' => 'Bildblock ',
],
'eval' => ['submitOnChange'=>true, 'tl_class'=>'w50'],
],
'blockTxt' => [
'label' => ['Text', ''],
'inputType' => 'text',
'eval' => [...],
'dependsOn' => [
'field' => ['blocks' => 'blockType'],
'value' =>'1'
],
],
'blockImg' => [
'label' => ['Bild', ''],
'inputType' => 'fileTree',
'eval' => [...],
'dependsOn' => [
'field' => ['blocks' => 'blockType'],
'value' =>'2'
],
],
],
],
],
]</code>
</pre>
<p>Danke und viele Grüße<br>
Andreas</p></div>
Andreas
tag:help.rocksolidthemes.com,2012-07-23:Comment/55934822
2022-10-02T06:07:00Z
2022-10-02T06:07:01Z
Verwendung: Custom Elements: 'dependsOn' innerhalb 'list'
<div><p>Hat sich erledigt.</p>
<p>Es funktionierte, nachdem ich aus den options des select die Option<br></p>
<pre>
<code>'0' => 'Bitte auswählen',</code>
</pre>
entfernt und stattdessen die 'includeBlankOption' zum select hinzugefügt hatte.<br>
'dependsOn' lautet dann ganz normal:
<pre>
<code>...
'dependsOn' => [
'field' => 'blockType',
'value' =>'1'
],<br>...</code>
</pre>
<p>Ein Basisschema für ein Element könnte dann z.B. so aussehen:<br></p>
<pre>
<code>return [
'label' => ['Unterschiedliche Blocks', ''],
'types' => ['content'],
'standardFields' => ['cssID'],<br> 'fields' => [
'blocks' => [
'label' => ['Blocks', ''],
'elementLabel' => '%s. Block',
'inputType' => 'list',
'minItems' => 1,
'maxItems' =>12,
'fields' => [<br> 'blockType' => [
'label' => ['Dieser Block ist ein:', 'Bitte auswählen'],
'inputType' => 'select',
'options' => [
'1' => 'Textblock',
'2' => 'Bildblock ',
],
'eval' => [
'submitOnChange'=>true,
'includeBlankOption' => true,
'tl_class'=>'w50',
],
],<br><br>
</code>
</pre>
<pre>
<code><code> &#39;blockTxt&#39; =&gt; [
&#39;label&#39; =&gt; [&#39;Text&#39;, &#39;&#39;],
&#39;inputType&#39; =&gt; &#39;text&#39;,
&#39;eval&#39; =&gt; [&#39;tl_class&#39; =&gt; &#39;w50&#39;],
&#39;dependsOn&#39; =&gt; [
&#39;field&#39; =&gt; &#39;blockType&#39;,
&#39;value&#39; =&gt;&#39;1&#39;,
],
],
&#39;blockImg&#39; =&gt; [
&#39;label&#39; =&gt; [&#39;Bild&#39;, &#39;&#39;],
&#39;inputType&#39; =&gt; &#39;fileTree&#39;,
&#39;eval&#39; =&gt; [
&#39;fieldType&#39; =&gt; &#39;radio&#39;,
&#39;filesOnly&#39; =&gt; true,
&#39;extensions&#39; =&gt; \Config::get(&#39;validImageTypes&#39;),
],
&#39;dependsOn&#39; =&gt; [
&#39;field&#39; =&gt; &#39;blockType&#39;,
&#39;value&#39; =&gt;&#39;1&#39;,
],
],
],
],</code></code>
</pre>
<pre>
<br>];
</pre>
<p>Danke und Gruß<br>
Andreas</p></div>
Andreas