我购买了由使用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}
您是否有一个想法,如何能够选择多个选项并正确显示所选的选项?
谢谢您的帮助。
答案 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'])}
一样。我认为一切都会按您的预期进行