Skip to content

Use of 'source=""' for select in 'multiple' doesn't work #39

@chippyash

Description

@chippyash

I have

           <multiple name="entries" min-entries="2">
            <tr>
                <td><select name="nominal"><options source="nominals"/></select></td>
                <td><input name="dr" type="number"></td>
                <td><input name="cr" type="number"></td>
                <td><button class="btn.del" value="Del"/></td>
            </tr>
            </multiple>

This fails to set the options correctly with $form->source('nominals', $this->nominals); and instead renders as

            <div class="multiple">
<div id="multiple152640179011218686025afb0afe01ff2" class="multiple-forms">
<div class="multiple-element" id="multiple15264017906284506685afb0afe020d3"/>
            <tr>
                <td><select name="entries[0][nominal]" source="nominals" >
</select>
</td><td><input step="any" type="number" name="entries[0][dr]" /></td><td><input step="any" type="number" name="entries[0][cr]" /></td><td><button class="btn.del" value="Del"/></td></tr>
<span class="multiple-remove"><a href="javascript:Formidable.removeInput('multiple15264017906284506685afb0afe020d3')">Remove</a><br /></span></div><div class="multiple-element" id="multiple152640179014166551895afb0afe02190"/>
            <tr>
                <td><select name="entries[1][nominal]" source="nominals" >
</select>
</td><td><input step="any" type="number" name="entries[1][dr]" /></td><td><input step="any" type="number" name="entries[1][cr]" /></td><td><button class="btn.del" value="Del"/></td></tr>
<span class="multiple-remove"><a href="javascript:Formidable.removeInput('multiple152640179014166551895afb0afe02190')">Remove</a><br /></span></div></div>
<div class="multiple-buttons"><script type="text/javascript">var multiple152640179011218686025afb0afe01ff2_code = "\n            <tr>\n                <td><select name=\"entries[{number}][nominal]\" source=\"nominals\" >\n<\/select>\n<\/td><td><input step=\"any\" type=\"number\" name=\"entries[{number}][dr]\" \/><\/td><td><input step=\"any\" type=\"number\" name=\"entries[{number}][cr]\" \/><\/td><td><button class=\"btn.del\" value=\"Del\"\/><\/td><\/tr>\n";
Formidable.multiple["multiple152640179011218686025afb0afe01ff2"] = 2;
</script><a href="javascript:Formidable.addInput('multiple152640179011218686025afb0afe01ff2', multiple152640179011218686025afb0afe01ff2_code);">Add</a></div></div>

instead of filling in the select options as expected.

I can see in 'Form.php'

    /**
     * Values sourcing
     */
    public function source($source, $data)
    {
        $sources = $this->parserData->getSources();

        $sources[$source]->source($data);
    }

This is only getting the sources for the outer form, not any multiples within it.

This could be changed to recurse into any multiples but then there is the consideration of what the javascript is going to do on row addition etc.

Can you suggest a sensible workaround, or point me in the right direction to create a PR?

Cheers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions