Skip to content
Syone edited this page Aug 6, 2023 · 1 revision

Select

The select list in a form is an OptionContainer.

  • OptionContainer FieldContainer::addSelect([array $attributes = array() [, array $options = array()]])
Parameter Description
attributes An array of key/value pairs representing all HTML <select> Tag attributes.
options An array of key/value pairs representing element settings.

Option keys available

Key Value type Value description
'label' string Input label
'error' string Error message
'required' boolean Set if input is required or not
'validator' array Array of callback functions
'label-class' string Label class name
'label-position' string 'before' or 'after'(default) or 'wrap-before' or 'wrap-after'
'error-position' string 'before' or 'after'(default)
'selected' string or array Selected element value(s)
'options' array Array of key/value pairs representing <option> tag value => label or a list of option label
  • OptionContainer OptionContainer::addOptGroup(string $label)
Parameter Description
label Label of <optgroup> Tag.
  • Option OptionContainer::addOption(string $label [, string $value])
Parameter Description
label <option> Tag label.
value <option> Tag value.
  • Option OptionContainer::addOptions(mixed $options)
Parameter Description
options Array of key/value pairs representing <option> tag value => label or a list of option label

Examples

Simple select

    <?php
    require '/path/to/your/syframework/directory/sy.inc.php';

    use Sy\Component\Html\Form;

    $form = new Form();

    $select = $form->addSelect(
    	array('name' => 'day', 'id' => 'my_day'),
    	array('label' => 'Day')
    );

    // add options in the select
    $select->addOption('');
    $select->addOption('Monday');
    $select->addOption('Tuesday');
    $select->addOption('Wednesday');
    $select->addOption('Thursday');
    $select->addOption('Friday');
    $select->addOption('Saturday');
    $select->addOption('Sunday');

    // or with addOptions method
    $select->addOptions('', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');

    echo $select;

Output result:

    <label for="my_day">Day</label>
    <select name="day" id="my_day">
    <option></option>
    <option>Monday</option>
    <option>Tuesday</option>
    <option>Wednesday</option>
    <option>Thursday</option>
    <option>Friday</option>
    <option>Saturday</option>
    <option>Sunday</option>
    </select>

You can also use the "options" option but the ouput will be a little different:

    <?php
    require '/path/to/your/syframework/directory/sy.inc.php';

    use Sy\Component\Html\Form;

    $form = new Form();

    $select = $form->addSelect(
    	array('name' => 'day', 'id' => 'my_day'),
    	array(
    		'label'   => 'Day',
    		'options' => array('', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')
    	)
    );

    echo $select;

Output result:

    <label for="my_day">Day</label>
    <select name="day" id="my_day">
    <option value="0"></option>
    <option value="1">Monday</option>
    <option value="2">Tuesday</option>
    <option value="3">Wednesday</option>
    <option value="4">Thursday</option>
    <option value="5">Friday</option>
    <option value="6">Saturday</option>
    <option value="7">Sunday</option>
    </select>

Options with value attribute

    <?php
    require '/path/to/your/syframework/directory/sy.inc.php';

    use Sy\Component\Html\Form;

    $form = new Form();

    $select = $form->addSelect(
    	array('name' => 'day', 'id' => 'my_day'),
    	array('label' => 'Day')
    );

    // add options with a value attribute in the select
    $select->addOption(''         , 0);
    $select->addOption('Monday'   , 1);
    $select->addOption('Tuesday'  , 2);
    $select->addOption('Wednesday', 3);
    $select->addOption('Thursday' , 4);
    $select->addOption('Friday'   , 5);
    $select->addOption('Saturday' , 6);
    $select->addOption('Sunday'   , 7);

    // or with addOptions method
    $select->addOptions(array(
    	'0' => '',
    	'1' => 'Monday',
    	'2' => 'Tuesday',
    	'3' => 'Wednesday',
    	'4' => 'Thursday',
    	'5' => 'Friday',
    	'6' => 'Saturday',
    	'7' => 'Sunday',
    ));

    // in this case, you can do that
    $select->addOptions(array('', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'));

    echo $select;

Output result:

    <label for="my_day">Day</label>
    <select name="day" id="my_day">
    <option value="0"></option>
    <option value="1">Monday</option>
    <option value="2">Tuesday</option>
    <option value="3">Wednesday</option>
    <option value="4">Thursday</option>
    <option value="5">Friday</option>
    <option value="6">Saturday</option>
    <option value="7">Sunday</option>
    </select>

Select with option group

    <?php
    require '/path/to/your/syframework/directory/sy.inc.php';

    use Sy\Component\Html\Form;

    $form = new Form();

    $select = $form->addSelect(
    	array('name' => 'day', 'id' => 'my_day'),
    	array('label' => 'Day')
    );

    // add options in the select
    $select->addOption('');
    $group1 = $select->addOptGroup('Workdays');
    $group1->addOption('Monday');
    $group1->addOption('Tuesday');
    $group1->addOption('Wednesday');
    $group1->addOption('Thursday');
    $group1->addOption('Friday');
    $group2 = $select->addOptGroup('Weekend');
    $group2->addOption('Saturday');
    $group2->addOption('Sunday');

    // or simply
    $select->addOption('');
    $select->addOptGroup('Workdays')->addOptions('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday');
    $select->addOptGroup('Weekend')->addOptions('Saturday', 'Sunday');

    echo $select;

Output result:

    <label for="my_day">Day</label>
    <select name="day" id="my_day">
    <option></option>
    <optgroup label="Workdays">
    <option>Monday</option>
    <option>Tuesday</option>
    <option>Wednesday</option>
    <option>Thursday</option>
    <option>Friday</option>
    </optgroup>
    <optgroup label="Weekend">
    <option>Saturday</option>
    <option>Sunday</option>
    </optgroup>
    </select>

Multi select

    <?php
    require '/path/to/your/syframework/directory/sy.inc.php';

    use Sy\Component\Html\Form;

    $form = new Form();

    $multiSelect = $form->addSelect(
    	array('name' => 'color[]', 'multiple' => 'multiple'),
    	array('label' => 'Color')
    );
    $multiSelect->addOptions('Red', 'Green', 'Blue', 'Yellow', 'Purple', 'Black', 'White');

    echo $multiSelect;

Output result:

    <label>Color</label>
    <select name="color[]" multiple="multiple">
    <option>Red</option>
    <option>Blue</option>
    <option>Green</option>
    <option>Yellow</option>
    <option>Purple</option>
    <option>Black</option>
    <option>White</option>
    </select>
Clone this wiki locally