type form fields drupal drupal-ctools

form - Drupal: Cómo hacer que un fieldset sea dependiente usando CTools



render form drupal 8 (2)

Encontré mi respuesta después de leer la fuente de CTools dependiente. Fieldset debería cambiar así:

$form[''profile-properties''] = array( ''#type'' => ''fieldset'', ''#title'' => t(''View the profile''), ''#process'' => array(''ctools_dependent_process''), ''#dependency'' => array(''radio:profile-status'' => array(''select'')), ''#input'' => true, ''#id'' => ''my-fs-id'', ''#prefix'' => ''<div id="my-fs-id-wrapper">'', ''#suffix'' => ''</div>'', );

En primer lugar, debe establecerse una ID para el conjunto de campos. Luego debe estar envuelto en una etiqueta DIV. La ID de la DIV debe ser la ID de feildset con el sufijo ''-wrapper''.

Estoy usando Ctools Dependency para ocultar un fieldset. Esto es parte de mi código:

$form[''profile-status''] = array( ''#type'' => ''radios'', ''#title'' => '''', ''#options'' => array( ''new'' => t(''Create a new profile.''), ''select'' => t(''Use an existing profile.''), ), ); $form[''select''] = array( ''#type'' => ''select'', ''#title'' => t(''Select a profile''), ''#options'' => $options, ''#process'' => array(''ctools_dependent_process''), ''#dependency'' => array(''radio:profile-status'' => array(''select'')), ); $form[''profile-properties''] = array( ''#type'' => ''fieldset'', ''#title'' => t(''View the profile''), ''#process'' => array(''ctools_dependent_process''), ''#dependency'' => array(''radio:profile-status'' => array(''select'')), ''#input'' => true, );

En el fragmento anterior, hay dos elementos, uno de selección y uno de campo. Ambos tienen parámetros #process y #dependency y ambos apuntan a un campo para el valor dependiente. El problema es que elementos como select o textfield se pueden ocultar fácilmente pero no funcionan para fieldset. En esta página de solicitud de soporte, el creador de CTools ha mencionado que ''#input'' => true es una ''#input'' => true . Como ve, lo agregué al código, pero no funciona tan bien.

¿Tienes alguna sugerencia?


ahora (febrero de 2013) el uso es:

$form[''foo_or_bar''] = array( ''#title'' => ''Foo or Bar'', ''#type'' => ''radios'', ''#options'' => array( "foo" => "Foo", "bar" => "Bar" ), ''#default_value'' => "foo", ); $form[''react_on_foo''] = array( ''#type'' => ''fieldset'', ''#title'' => t(''Foo fieldset''), ''#dependency'' => array(''radio:foo_or_bar'' => array(''foo'')), ); $form[''react_on_foo''][''dummy_for_foo_fieldset''] = array( ''#title'' => t(''Dummy for FOO fieldset''), ''#type'' => ''textfield'', ); $form[''react_on_bar''] = array( ''#type'' => ''fieldset'', ''#title'' => t(''Bar fieldset''), ''#dependency'' => array(''radio:foo_or_bar'' => array(''bar'')), ); $form[''react_on_bar''][''dummy_for_bar_fieldset''] = array( ''#title'' => t(''Dummy for BAR fieldset''), ''#type'' => ''textfield'', );

Y #process ya no es necesario.