簡體   English   中英

如何以ZF2形式制作自定義單選按鈕標簽?

[英]How to make custom Radio-Button labels in ZF2 forms?

我有一個帶單選按鈕的表單:

$this->add([
    'name' => 'time',
    'options' => [
        'value_options' => [
            '0' => '9:00 - 12:00',
            '1' => '12:00 - 16:00',
            '2' => '16:00 - 19:00',
        ],
        'label_attributes' => [
            'class' => 'WW_OBJ_fm-label',
        ]
    ],
    'type' => 'Radio'
]);

在視圖中我輸出如下:

<div> 
<?php echo $this->formElement($form->get('time')); ?>
</div>

並獲取輸出(格式化為可讀性):

<div>
    <label class="WW_OBJ_fm-label">
        <input type="radio" name="time" value="0"/>
        9:00 - 12:00
    </label>
    <label class="WW_OBJ_fm-label">
        <input type="radio" name="time" value="1"/>
        12:00 - 16:00
    </label>
    <label class="WW_OBJ_fm-label">
        <input type="radio" name="time" value="2"/>
        16:00 - 19:00
    </label>
</div>

但我需要,標簽文本由<span>包裹:

<div>
    <label class="WW_OBJ_fm-label">
        <input type="radio" name="time" value="0"/>
        <span class="WW_label-text">9:00 - 12:00</span>
    </label>
    <label class="WW_OBJ_fm-label">
        <input type="radio" name="time" value="1"/>
        <span class="WW_label-text">12:00 - 16:00</span>
    </label>
    <label class="WW_OBJ_fm-label">
        <input type="radio" name="time" value="2"/>
        <span class="WW_label-text">16:00 - 19:00</span>
    </label>
</div>

實現它的最佳方法是什么?

解決方案是使用labelOption'disable_html_escape':

$this->add([
        'name' => 'time',
        'options' => [
            'value_options' => [
                '0' => '<span class="WW_label-text">9:00 - 12:00</span>',
                '1' => '<span class="WW_label-text">12:00 - 16:00</span>',
                '2' => '<span class="WW_label-text">16:00 - 19:00</span>',
            ],
            'label_attributes' => [
                'class' => 'WW_OBJ_fm-label',
            ]
        ],
        'type' => 'Radio'
    ]);
$element = $this->get('time');
$element->setLabelOptions(['disable_html_escape' => true]);

我看到了三種可能的解決方案。

1)擴展Zend\\Form\\View\\Helper\\FormRadio類,重寫renderOptions方法,幾乎​​完全復制你可以在Zend\\Form\\View\\Helper\\FormMultiCheckbox但可能添加一個選項來將可選屬性傳遞給span元素

2)非常微妙,但可以節省你寫一些代碼:使用翻譯。 由於無線電值選項已轉換,您可以保留在配置中定義的值,但在轉換中添加span元素

3)不要使用$this->formElement來顯示元素,而是實際寫出所有的html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM