1

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”和“quantity”吗?

4

1 回答 1

1

只有两个占位符可以传入CHtml::checkBoxList-{label}{input}.

CHtml::checkBoxListimagePath对or一无所知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可能有帮助....

我希望这有帮助。

于 2013-05-24T10:11:07.170 回答