2011-09-08 4 views
0

실제로 foreach 루프에서 생성되는 여러 activeCheckBoxLists가있는 페이지가 있습니다. 내가 가지고있는 문제는 각리스트가 다른 모든 생성 된리스트와 같은 이름과 ID로 생성된다는 것입니다. 나는 이터 레이션이나 무언가를 이드와 네임에게 보내어 그들이 유일하도록하는 방법이 필요하다.동일한 페이지의 동일한 모델에있는 yii의 여러 활성 체크리스트

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; 

생성 된 목록은

<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> 

을 다음과 같이 표시 내가 필요로하는 (바람직하게는) ID가 목록 사이 다를 수,하지만 나는 시작이 될 것이라고 이름이 다른 얻을 수있는 경우에도 마찬가지입니다. 도움에 미리 감사드립니다.

답변

2

API documentation에 표시된대로 activeCheckBoxList에 htmloptions를 추가 할 수 있습니다. 귀하의 경우에는 당신이 이런 식으로 뭔가를 할 수 계산한다 :

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의 인스턴스에서 4 번째 매개 변수입니다. API를보십시오!

+0

이렇게했습니다. 그 일을하는 것에 대해 생각했지만 작동 여부를 확신 할 수 없었습니다. 왜 전에 시도하지 않았는지 모르겠습니다. 도와 주셔서 감사합니다! – stmpy

관련 문제