CHtml :: checkBoxList中是否有其他值的解决方案?
现在我这样做:
<?php
echo CHtml::checkBoxList(
'tinyList',
'',
array("value1" => "label1", "value2" => "label2", "value3" => "label3"),
array(
'template' => '<tr><td><img src="{imagePath}" /></td><td>{label}</td><td>{quantity}</td><td>{input}</td></tr>',
'container' => 'tbody'
));
?>
我得到了这个结果:
<tbody id="tinyList">
<tr>
<td><img src="{imagePath}" /></td>
<td><label for="tinyList_0">label1</label></td>
<td>{quantity}</td>
<td><input value="value1" id="tinyList_0" type="checkbox" name="tinyList[]" /></td>
</tr>
<tr>
<td><img src="{imagePath}" /></td>
<td><label for="tinyList_1">label2</label></td>
<td>{quantity}</td>
<td><input value="value2" id="tinyList_1" type="checkbox" name="tinyList[]" /></td>
</tr>
<tr>
<td><img src="{imagePath}" /></td>
<td><label for="tinyList_2">label3</label></td>
<td>{quantity}</td>
<td><input value="value3" id="tinyList_2" type="checkbox" name="tinyList[]" /></td>
</tr>
</tbody>
(怎么样)我能填补缺失的部分“imagePath”和“数量”吗?
答案 0 :(得分:1)
只有两个占位符可以传入CHtml::checkBoxList
- {label}
和{input}
。
CHtml::checkBoxList
对imagePath
或quantity
一无所知。
因此,它无法将它们添加到模板中。
我能看到的唯一解决方案是将CListView
小部件与自定义视图文件一起使用,这将代表您需要的时间。
您还需要定义具有所有必需值的数据结构。 让它像这样:
$rawData=array(
array(
'inputValue'=>'value 1',
'inputLabel'=>'label 1',
'quantity'=>23,
'imagePath'=>'https://www.google.com/images/srpr/logo4w.png'
),
array(
'inputValue'=>'value 2',
'inputLabel'=>'label 2',
'quantity'=>21,
'imagePath'=>'https://www.google.com/images/srpr/logo4w.png'
),
array(
'inputValue'=>'value 3',
'inputLabel'=>'label 3',
'quantity'=>56,
'imagePath'=>'https://www.google.com/images/srpr/logo4w.png'
)
);
然后主视图文件如下所示:
<table>
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>new CArrayDataProvider($rawData, array('keyField'=>false)),
'itemView'=>'_item',
'template'=>'{items}'
));
?>
</table>
和_item
:
<?php
$id='option-'.$index;
?>
<tr>
<td>
<?php echo CHtml::image($data['imagePath']) ?>
</td>
<td>
<?php echo CHtml::label($data['inputLabel'], $id)?>
</td>
<td>
<?php echo $data['quantity'] ?>
</td>
<td>
<?php echo CHtml::checkBox('tinyList', false, array('value'=>$data['inputValue'], 'id'=>$id)) ?>
</td>
</tr>
上面的代码为我提供了一个表格,其中包含每行中的图像,标签,数字和复选框。
同样CGridView
可能会有所帮助......
我希望这会有所帮助。