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

Smarty PHP Multi-Select for custom fields

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

我在制作下拉列表 select 字段 mulitiselect 时遇到问题,但我没有找到解决方案。

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

在注册过程中 select 一旦该自定义字段的选项被编辑,它将在个人资料页面中看到。

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

这是自定义字段 .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 select 多个选项,但我不知道它是否有效,或者不知道我只看到一个selected 个人资料页面中的选项。

这是 profile.php 中的代码:

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

这是在 profile.tpl 中显示 selected 选项的代码:

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

请问您是否知道如何能够 select 多个选项并正确显示 selected 选项?

感谢您的帮助。

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