智能的PHP多选自定义字段



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

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

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

在注册过程中选择该自定义字段的选项后,它将显示在配置文件页面中。

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

下面是自定义字段 .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来选择多个选项,但我不知道它是否有效或不知道我在配置文件页面中只看到一个选定的选项。

这是配置文件中的代码.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}

您是否知道如何选择多个选项并正确显示所选选项?

谢谢你的帮助。

我认为问题是,在将你的选择修改为多个后,你仍然将其工作的结果视为单个值而不是数组。首先,您需要将 select 的名称更改为 name="fld_{$custom_field['field_id']}[]"这意味着 select 可以有几个值,它会将其作为值数组发送到后端。其次,您需要在后端管理此数组并保存其所有值。第三,你需要像对待前面的阵列一样对待它,{if $custom_field['value'] == $value} 不会是单个值,因此您需要检查$value是否在数组中,$custom_field['value']{if $value|in_array($custom_field['value'])}。我认为一切都会像你期望的那样工作

最新更新