【问题标题】:multiple activecheckboxlists in yii from the same model on the same pageyii 中的多个 activecheckboxlists 来自同一页面上的同一模型
【发布时间】:2011-09-08 16:27:02
【问题描述】:

我有一个包含多个 activeCheckBoxLists 的页面,这些页面实际上是在 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;

生成的列表如下所示

<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 不同,但即使我可以得到不同的名称,这也是一个开始。提前感谢您的帮助。

【问题讨论】:

    标签: php activerecord yii


    【解决方案1】:

    您可以按照API documentation 中的说明将htmloptions 添加到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!

    【讨论】:

    • 成功了!我想过这样做,但我不确定它会起作用,我不知道为什么我以前没有尝试过。感谢您的帮助!
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2019-02-21
    相关资源
    最近更新 更多