如何在Codestar Framework中输出子数组的选项标签而非键值
解决Codestar Framework嵌套Group中Select选项显示标签而非键值的问题
要解决这个问题,核心思路是保留Select选项的键值对映射关系——因为Codestar Framework在存储Select字段值时,只会保存选项的键(比如low),而不是显示的标签(比如Low)。我们需要在输出时通过键去匹配对应的标签。
步骤1:把Price选项抽成可复用的数组
首先,把Price的选项定义成一个独立的数组,这样配置和前端输出都能复用,避免重复代码,也方便后续维护:
// 定义价格选项的键值对,后续配置和输出都用这个数组 $price_options = array( 'low' => 'Low', 'medium' => 'Medium', 'high' => 'High', );
步骤2:更新Codestar配置
把原来配置里的Price选项替换成这个数组,让配置更简洁统一:
array( 'id' => 'rows', 'type' => 'group', 'title' => 'Rows', 'accordion_title_auto' => false, 'accordion_title_prefix' => 'Row', 'accordion_title_number' => true, 'fields' => array( array( 'id' => 'columns', 'type' => 'group', 'title' => 'Columns', 'accordion_title_auto' => false, 'accordion_title_prefix' => 'Column', 'accordion_title_number' => true, 'fields' => array( array( 'id' => 'column-color', 'type' => 'select', 'title' => 'Color', 'options' => array( 'red' => 'Red', 'blue' => 'Blue', 'green' => 'Green', ), ), array( 'id' => 'column-price', 'type' => 'select', 'title' => 'Price', 'options' => $price_options, // 复用定义好的数组 ), ), ), ), )
步骤3:修改前端输出代码
在遍历输出时,通过存储的键值去$price_options数组里获取对应的显示标签,同时加上isset判断避免报错:
$rows = $options['rows']; // 复用价格选项数组(如果已经在全局定义过,这里可以省略) $price_options = array( 'low' => 'Low', 'medium' => 'Medium', 'high' => 'High', ); foreach ( $rows as $id => $name ) { echo '<div class="row-'. $id .'">'; foreach ( $name['columns'] as $id_col => $name_col ) { // 通过键值获取显示标签, fallback到原始键值避免不存在的情况报错 $price_label = isset($price_options[$name_col['column-price']]) ? $price_options[$name_col['column-price']] : $name_col['column-price']; echo '<div class="column-'. $id_col .' color-'. $name_col['column-color'] .'"> Price - '. $price_label .' </div>'; } echo '</div>'; }
这样修改后,输出的内容就会完全符合你想要的格式,显示Price - Low这类标签文本而非原始键值。
内容的提问来源于stack exchange,提问作者Avigo
相关产品推荐
相关产品推荐

