setAdvanced to specify one form element as an advanced option
You can use MoodleQuickForm's method setAdvanced to specify a form element as an advanced option :
$mform->addElement('select', 'display', get_string('displaymode', 'choice'), $CHOICE_DISPLAY); $mform->setAdvanced('display');
setAdvanced takes a second boolean parameter which defaults to true. True means set this control as an advanced control. False means it is not advanced.
Make Sure You Name the Header of a Fieldset Within Which You Include Advanced Elements
Ie. this is not good :
'', get_string('miscellaneoussettings', 'form')); $mform->addElement('select', 'display', get_string('displaymode', 'choice'), $CHOICE_DISPLAY); $mform->setAdvanced('display');
The second param of the addElement('header', ....) should be a unique name for the header.
If you don't then other sections of the form that also have an unnamed header may also get marked as advanced. This will also happen if header elements have identical names.
setAdvanced to specify all form elements in a fieldset are advanced elements
$mform->addElement('header', 'miscellaneoussettingshdr', get_string('miscellaneoussettings', 'form')); $mform->setAdvanced('miscellaneoussettingshdr');
Will set the header element miscellaneoussettingshdr and all the elements it contains to advanced.
If form elements are hidden and the form is submitted then no values are submitted by the form elements. But the 'default values' of the form elements are automatically passed to the processing functions from data_submitted(). Default values are set by setDefault normally called from within definition() function or by set_data which is called to load database contents into the form.