dependsOn = Mandatory
kgansberger opened this issue · 11 comments
an error occurs if dependsOn is true and field has 'mandatory'=>'true' .
Can you provide a small example configuration?
...
'insertImage' => array(
'label' => array('de' => array('Bild einfügen','')),
'default' => 0,
'inputType' => 'checkbox',
'eval' => array('tl_class'=>'w50'),
),
'image' => array(
'label' => array('Bild wählen',''),
'inputType' => 'fileTree',
'default' => 0,
'dependsOn' => array(
'field' => 'insertImage',
'value' => '1',
),
'eval' => array('mandatory'=>'true', 'fieldType'=>'radio', 'files'=>true, 'filesOnly'=>true, 'tl_class'=>'clr'),
'extensions'=>GLOBALS['TL_CONFIG']['validImageTypes']),
),
...
and before I forget: thank you for this great functionality!
Could you please verify if the current master branch works correctly?
"madeyourday/contao-rocksolid-custom-elements": "dev-master as 2.3.999",
I can confirm this behavior too although I copied your changed javascript.
If I have 2 fields with mandatory while one of them is hidden and I try to save the content element the console shows following error message
An invalid form control with name='vimeo' is not focusable
My code in the config file
'showYoutubeVimeo' => array(
'label' => array(
'en' => array('Add YouTube or Vimeo', 'If you want to add a Vimeo or YouTube video, please, choose of the options'),
'de' => array('YouTube oder Vimeo hinzufügen', 'Wenn du ein YouTube- oder Vimeo-Video hinzufügen willst, wähle eine der Optionen.'),
),
'inputType' => 'select',
'options' => array(
'',
'showYoutube',
'showVimeo',
),
'reference' => array(
'' => array('en' => '', 'de' => ''),
'showYoutube' => array('en' => 'Add an YouTube video', 'de' => 'Ein YouTube-Video hinzufügen'),
'showVimeo' => array('en' => 'Add a Vimeo video', 'de' => 'Ein Vimeo-Video hinzufügen'),
),
'eval' => array(
'tl_class' => 'w50',
),
),
'youtube' => array (
'exclude' => false,
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => 'showYoutube', // Der Wert der mit dem Feldwert übereinstimmen muss
),
'eval' => array('mandatory'=>true, 'decodeEntities'=>true, 'tl_class'=>'long clr'),
),
'vimeo' => array (
'exclude' => false,
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => 'showVimeo', // Der Wert der mit dem Feldwert übereinstimmen muss
),
'eval' => array('mandatory'=>true, 'decodeEntities'=>true, 'tl_class'=>'long clr'),
),
'playerSize' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => array('showYoutube', 'showVimeo'), // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
'playerStart' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => array('showYoutube', 'showVimeo'), // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
'playerStop' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => 'showYoutube', // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
'playerColor' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => 'showVimeo', // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
'playerCaption' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => array('showYoutube', 'showVimeo'), // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
'playerAspect' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => array('showYoutube', 'showVimeo'), // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
'splashImage' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => array('showYoutube', 'showVimeo'), // Der Wert der mit dem Feldwert übereinstimmen muss
),
'eval' => array('tl_class' => 'long clr'),
),
'youtubeOptions' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => 'showYoutube', // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
'vimeoOptions' => array
(
'inputType' => 'standardField',
'dependsOn' => array(
'field' => 'showYoutubeVimeo', // Name des Feldes das geprüft werden soll
'value' => 'showVimeo', // Der Wert der mit dem Feldwert übereinstimmen muss
),
),
I can confirm this behavior too although I copied your changed javascript.
Did you clear your browser cache afterwards or tried the feature in the inkognito mode of your browser?
Yes, I tried it in the incognito mode (Chrome) and unfortunately, it did work. As I mentioned I copied only the new part of your javascript.
Please try the current master branch if the issue appears there too:
"madeyourday/contao-rocksolid-custom-elements": "dev-master as 2.3.999",
I tried it. But it didn't work as expected. There is the same error message in the console if I don't fill out the second mandatory field which is currently in the hidden part.
An invalid form control with name='vimeo' is not focusable.
Could you please try it again with "dev-master as 2.3.999"
?
I think your case did’t work because you used standardField
s, this should be fixed now too.
Hello, it seems to work. Thank you very much.
Released as version 2.3.5