用于自定义字段的Smarty PHP Multi-Select

时间:2018-08-07 16:57:50

标签: php smarty multi-select

我购买了由使用smarty的人构建的脚本,这是一个社交网络平台。

我在使下拉选择字段为mulitiselect时遇到问题,但没有找到解决方案。

在管理区域中,有一个选项可以在注册表单中添加自定义字段,只有三个选项:文本框,文本区域,选择框(屏幕截图:https://imgur.com/d7DuQZc

一旦在注册过程中选择了该自定义字段的选项,它将在个人资料页面中显示。

我似乎无法弄清楚如何使该字段成为多选字段。

这是自定义字段.tpl文件的代码

{elseif $custom_field['type'] == "selectbox"} 
               <select name="fld_{$custom_field['field_id']}" multiple="multiple" size="5"> 
                   <option {if $custom_field['value'] == ""}selected{/if} value="none">{__("Select")} {__($custom_field['label'])} </option> 
                   {foreach $custom_field['options'] as $id => $value} 
                       <option {if $custom_field['value'] == $value}selected{/if} value="{$id}">{$value}</option> 
                   {/foreach}

我添加了:multiple =“ multiple”,更改了字段,我可以通过按住ctrl来选择多个选项,但是我不知道它是否有效,或者不知道我在个人资料页面中仅看到一个选择的选项。

这是profile.php中的代码:

/ *获取自定义字段* / $ smarty-> assign('custom_fields',$ user-> get_custom_fields(array(“ for” =>“ user”,“ get” =>“ profile”,“ node_id” => $ profile ['user_id']))) );

下面是显示profile.tpl中选定选项的代码:

{foreach $custom_fields['other'] as $custom_field}{if $custom_field['value']} {$custom_field['label']}{$custom_field['value']} </li> {/if} {/foreach}

您是否有一个想法,如何能够选择多个选项并正确显示所选的选项?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为问题在于,将选择修改为多个后,您仍将其工作结果视为单个值,而不是数组。首先,您需要将select的名称更改为name="fld_{$custom_field['field_id']}[]",这意味着select可以具有一些值,并将其作为值数组发送到后端。其次,您需要在后端管理此数组并保存其所有值。第三,您需要将其与前面的数组和{if $custom_field['value'] == $value}一起使用 不会是单个值,因此您需要检查$value是否在数组$custom_field['value']中,如{if $value|in_array($custom_field['value'])}一样。我认为一切都会按您的预期进行