Php 同一页面上同一型号的yii中的多个ActiveCheckboxList

Php 同一页面上同一型号的yii中的多个ActiveCheckboxList,php,activerecord,yii,Php,Activerecord,Yii,我有一个包含多个ActiveCheckboxList的页面,它们实际上是在foreach循环中生成的。我遇到的问题是,每个列表都是使用与其他生成列表相同的名称和id生成的。我需要一种方法,要么发送一个迭代,要么发送一些东西到id和name中,以便它们是唯一的 当我使用jquery选择列表的第一项时,它会选择每个列表的第一项 下面是生成列表的代码 // collect all filter titles (level == 0, parent == 0) $topLevelFilterTitles

我有一个包含多个ActiveCheckboxList的页面,它们实际上是在foreach循环中生成的。我遇到的问题是,每个列表都是使用与其他生成列表相同的名称和id生成的。我需要一种方法,要么发送一个迭代,要么发送一些东西到id和name中,以便它们是唯一的

当我使用jquery选择列表的第一项时,它会选择每个列表的第一项

下面是生成列表的代码

// collect all filter titles (level == 0, parent == 0)
$topLevelFilterTitles = $hsf->findAllByAttributes(array('level'=>'0','parent_id'=>'0'));
foreach($topLevelFilterTitles as $filterTitle):
  // with each filter title find all children (level == 1, parent == filter title id)
  echo "<div class='half menu split'>";
  echo "<p class='uppercase-text filter-name'>" . $filterTitle->title . "</p>";
  $filterOptions = $hsf->findAllByAttributes(
     array(
    'level'=>'1',
    'parent_id'=>$filterTitle->id,
     )
  );
  $list = CHtml::listData($filterOptions,'filter_name','title');
  echo CHtml::activeCheckBoxList(
     $hsf,  // model
 'filter_name',
 $list
  );
  echo "</div>";
endforeach;
//收集所有筛选器标题(级别==0,父级==0)
$topLevelFilterTitles=$hsf->findAllByAttributes(数组('level'=>0','parent\u id'=>0');
foreach($TopLevelFilterTitle作为$filterTitle):
//使用每个筛选器标题查找所有子项(级别==1,父项==筛选器标题id)
回声“;
echo“

”$过滤器->标题。“

”; $filterOptions=$hsf->findAllByAttributes( 排列( “级别”=>“1”, 'parent_id'=>$filtertile->id, ) ); $list=CHtml::listData($filterOptions、'filter_name'、'title'); echo-CHtml::activeCheckBoxList( $hsf,//型号 “过滤器名称”, 美元清单 ); 回声“; endforeach;
生成的列表显示如下

<div class="halfmenu split">
   <p class="uppercase-text filter-name">Filter Name R</p>
   <input id="ytHardwareSearchFiltering_filter_name" type="hidden" value="" name="HardwareSearchFiltering[filter_name]" />
   <input id="HardwareSearchFiltering_filter_name_0" value="r_value0" type="checkbox" name="HardwareSearchFiltering[filter_name][]" /> 
   <label for="HardwareSearchFiltering_filter_name_0">r_name0</label><br/>
   <input id="HardwareSearchFiltering_filter_name_1" value="r_value1" type="checkbox" name="HardwareSearchFiltering[filter_name][]" />
   <label for="HardwareSearchFiltering_filter_name_1">r_name1</label>
</div>
<div class="halfmenu split">
   <p class="uppercase-text filter-name">Filter Name T</p>
   <input id="ytHardwareSearchFiltering_filter_name" type="hidden" value="" name="HardwareSearchFiltering[filter_name]" />
   <input id="HardwareSearchFiltering_filter_name_0" value="t_value0" type="checkbox" name="HardwareSearchFiltering[filter_name][]" /> 
   <label for="HardwareSearchFiltering_filter_name_0">t_name0</label><br/>
   <input id="HardwareSearchFiltering_filter_name_1" value="t_value1" type="checkbox" name="HardwareSearchFiltering[filter_name][]" />
   <label for="HardwareSearchFiltering_filter_name_1">t_name1</label><br/>
</div>

筛选器名称R

r_name 0
r_名称1

筛选器名称T

t_name 0
t_name 1

我需要(最好)的ID是不同的名单,但即使我可以得到不同的名称,这将是一个开始。提前感谢您的帮助。

您可以将HTML选项添加到activeCheckBoxList中,如中所示。就你而言,我认为你可以这样做:

echo CHtml::activeCheckBoxList(
    $hsf,  // model
    'filter_name',
    $list, array(
        // Here you could use your filterTitle id or any other
        // variable that will make your checkbox unique
        'id'   => 'chk_'.$filterTitle->id,
        'name' => 'chk_'.$filterTitle->id
    )
);

Htmloptions是activeCheckBoxList作为数组实例化的第四个参数。看看API

成功了!我曾想过这样做,但我不确定它是否有效,我不知道为什么我以前没有尝试过。谢谢你的帮助!