For example in the FormBuilder module:
Code: Select all
Notice: Undefined property: stdClass::$op in ... tmp\templates_c\...
The funny part is that this issue is caused because you ARE checking for the existance of that property.
The problem is within Smarty
To be more precise it's the {section} plugin.
{section} - similar to {foreach} - does someting more than just to loop over a given structure. And by that is uses parts of {foreach}. The result of these parts are used as index in a more complex array-like structure. {section} does not validate that result. And if "null" is returned by the {foreach} compiler part this will result in an invalid index.
Example of FormBuilder:
Code: Select all
$_prefixVariable1=$_smarty_tpl->tpl_vars['entry']->value->input[(isset($_smarty_tpl->tpl_vars['__smarty_section_numloop']->value['index']) ? $_smarty_tpl->tpl_vars['__smarty_section_numloop']->value['index'] : null)]->op;
Code: Select all
... $some_array[null]->op;
The solution is either to modify your templates to check more often for the existence of properties or completely avoid {section} and use {foreach} instead.
Again the example of FormBuilder. In the original template for inputs that consist of multiple parts (e.g. a group of checkboxes) this is used :
Code: Select all
{section name=numloop loop=$entry->input}
{if $entry->label_parts == 1}
<div>{$entry->input[numloop]->input} {$entry->input[numloop]->name}</div>
{else}
{$entry->input[numloop]->input}
{/if}
{if isset($entry->input[numloop]->op) && $entry->input[numloop]->op}{$entry->input[numloop]->op}{/if}
{/section}
Replace this line right before {/section}:
Code: Select all
{if isset($entry->input[numloop]->op) && $entry->input[numloop]->op}{$entry->input[numloop]->op}{/if}
Code: Select all
{if isset($entry->input[numloop])}
{$___tmp=$entry->input[numloop]}
{if isset($___tmp->op) && $___tmp->op}
{$___tmp->op}
{/if}
{/if}
Code: Select all
{foreach from=$entry->input item=entry_input}
{if $entry->label_parts == 1}
<div>{$entry_input->input} {$entry_input->name}</div>
{else}
{$entry_input->input}
{/if}
{if isset($entry_input->op)}{$entry_input->op}{/if}
{/foreach}