# Using the HelperOptions class

**Table of contents**

* [Using the HelperOptions class](/1-6-documentation/english-documentation/developer-guide/developer-tutorials/using-the-helper-classes/using-the-helperoptions-class.md#UsingtheHelperOptionsclass-UsingtheHelperOptionsclass)
  * [Options declaration](/1-6-documentation/english-documentation/developer-guide/developer-tutorials/using-the-helper-classes/using-the-helperoptions-class.md#UsingtheHelperOptionsclass-Optionsdeclaration)
  * [Basic declaration](/1-6-documentation/english-documentation/developer-guide/developer-tutorials/using-the-helper-classes/using-the-helperoptions-class.md#UsingtheHelperOptionsclass-Basicdeclaration)

## Using the HelperOptions class <a href="#usingthehelperoptionsclass-usingthehelperoptionsclass" id="usingthehelperoptionsclass-usingthehelperoptionsclass"></a>

This helper is used to generate a configuration form, the values of which are stored in the `configuration` table. Example: the "Preferences" page.

### Options declaration <a href="#usingthehelperoptionsclass-optionsdeclaration" id="usingthehelperoptionsclass-optionsdeclaration"></a>

Fields inside \[brackets] are optional.\
Values between {curly braces} list the possible values for this field.

```
$this->fields_options = array(
  'general' => array(
    ['title'] => $this->l('Carrier options'),                      // The title of the fieldset. If missing, default is 'Options'.
    ['top'] => $this->l('Text to display before the fieldset'),    // This text is display right above the first. Rarely used.
    ['image'] => 'url to icon',                                    // If missing, will use the default icon for the tab.
    ['description'] => $this->l('Display as description'),         // Displays an informational box above the fields.	
    ['info'] => $this->l('Display as info'),                       // Displays an unstyled text above the fields.
    'fields' => array(                                             // The various option fields.
      'PS_CARRIER_DEFAULT' => array(                               // The aray is named after the option's ID. It must be the 
                                                                   // same name as the value stored in the ps_configuration table.
        ['title'] => $this->l('Default carrier:'),                 // The name of the option.
        ['desc'] => $this->l('The default carrier used in shop'),  // The description of the option.
        ['cast'] => 'intval',                                      // Using this option, you can cast the variable's content
                                                                   // into a known value. You can use boolval, floatval, intval 
                                                                   // or strval depending on value type you want to receive.
        'type' => {'text', 'hidden', 'select', 'bool', 'radio',    // The kind of input field you want to use. 
          'checkbox', 'password', 'textarea', 'file', 'textLang', 
          'textareaLang', 'selectLang'},
        ['suffix'] => 'kg',                                        // Display after the field (ie. currency).
                                                                   // For text fields or password fields only.
        ['identifier'] => 'id_carrier',                            // The unique ID for the form.
        ['list'] => array(list do display as options),             // For select field only.
        ['empty_message'] => $this->l('Display if list is empty'), // For select field only
        ['cols'] => 40,                                            // For textarea fields only.
        ['rows'] => 5,                                             // For textarea fields only.
        ['thumb'] => 'url to thumb image',                         // For file fields only.
        ['is_invisible'] => {true, false}                          // Disable the field depending on shop context.
      ),
      'another_field' => array(
        ...
      ),
    ),
    'submit' => array()
  ),
  'another fieldset' => ...
);
```

### Basic declaration <a href="#usingthehelperoptionsclass-basicdeclaration" id="usingthehelperoptionsclass-basicdeclaration"></a>

Removing all the optional fields, this is how to build a basic HelperOptions element:

```
$this->fields_options = array(
    'general' => array(
        'title' => $this->l('Parameters'),
        'fields' => array(
            'PS_MYMODULE_OPTION1' => array(
                'title' => $this->l('Choose one'),
                'desc' => $this->l('Choose between Yes and No.'),
                'cast' => 'boolval',
                'type' => 'bool'
            ),
            'PS_MYMODULE_OPTION2' => array(
                'title' => $this->l('Add some text'),
                'desc' => $this->l('This is where you can add some text'),
                'cast' => 'strval',
                'type' => 'text',
                'size' => '10'
            )
        )
    )
);
```

This specific code generates this HTML code (simplified here for readability reasons):

```
 <form id="_form" name="_form">
  <fieldset>
    <legend>Parameters</legend>

    <div>
      <labe>Choose one</label>
      <div>
        <label><img alt="Yes" src="../img/admin/enabled.gif" title="Yes" /></label>
        <input type="radio" value="1" />
        <label>Yes</label>
        <label><img alt="No" src="../img/admin/disabled.gif" title="No" /></label>
        <input type="radio" value="0" checked="checked" />
        <label>No</label>
        <p>Choose between Yes and No.</p>
      </div>
    </div>

    <div class="clear"></div>

    <div>
      <label>Add some text</label>
      <div>
        <input type="text" value="" />
        <p>This is where you can add some text</p>
      </div>
    </div>
  </fieldset>
</form>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.prestashop-project.org/1-6-documentation/english-documentation/developer-guide/developer-tutorials/using-the-helper-classes/using-the-helperoptions-class.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
