1

I'm struggling with this for quite some hours: I'm trying to add new fields to a form generated with the HelperForm class in Prestashop for a custom module.

I try to do this for the configuration page of the module in the getContent() function

The following field is accepted and it works:

array(
    'type' => 'file',
    'label' => $this->l('Button image'),
    'id' => 'button_image_path',
    'name' => 'button_image_path',
    'image' => '<img src="'._MODULE_DIR_.$this->name.'\\img\\'.basename($buttonImage["setting_value"]).'" class="button-image-preview" width="30">'
)

However, when i try to add other fields like this:

array(
    'type' => 'text',
    'label' => $this->l('Number of displayed products'),
    'name' => 'CROSSSELLING_NBR',
    'desc' => $this->l('Set the number of products displayed in this block.'
)

It gives this error:

Notice on line 387 in file D:\wamp\www\qmart.ro\tools\smarty\sysplugins\smarty_internal_templatebase.php(157) : eval()'d code
[8] Undefined index: CROSSSELLING_NBR

However, the input is still generated, and it looks like this:

<input type="text" name="CROSSSELLING_NBR" id="CROSSSELLING_NBR" value="" class="">

What i tried:

  • Changing the input type from text to color for example, and it gave the same error
  • Changing the label content and the name content, and the error still appeared

I did not change anything in the core files.

So, the form is being built for those inputs, but this "undefined index" thing still occurs.

Gabriel
  • 371
  • 1
  • 3
  • 18

2 Answers2

1

So, apparentply they force you to choose some default value for the inputs.

i simplu solved it by adding this line:

$helper->fields_value['CROSSSELLING_NBR'] = '';
Gabriel
  • 371
  • 1
  • 3
  • 18
0

According to your code...

array(
    'type' => 'text',
    'label' => $this->l('Number of displayed products'),
    'name' => 'CROSSSELLING_NBR',
    'desc' => $this->l('Set the number of products displayed in this block.'
)

You have an error in 'desc', you need close the final parenthesis, this should works...

array(
    'type' => 'text',
    'label' => $this->l('Number of displayed products'),
    'name' => 'CROSSSELLING_NBR',
    'desc' => $this->l('Set the number of products displayed in this block.')
)
Rolige
  • 993
  • 8
  • 10