使用CakePHP 3更改单选按钮输入模板

时间:2017-02-07 12:24:07

标签: php cakephp cakephp-3.0

我想改变结构,但它不起作用,它总是相同的结构。如何解决我的问题?

 <?php
$default = 'wepay';
$options = array('wepay' => 'WePay', 'paypal' => 'Paypal', 'donorbank' => 'Donor Bank');
echo $this->Form->input('payment_method', [
    'templates' => [
        'radioWrapper' => '<label class="radio-inline">{{label}}</label>'],
    'type'      => 'radio',
    'options'   => $options,
    'default'   => $default
]);
?>

但是这段代码没有正确生成输出。我想生成如下输出:

<label class="radio-inline">
    <input type="radio" name="payment_method" value="wepay" id="payment-method-wepay" checked="checked">WePay
</label>
<label class="radio-inline">
    <input type="radio" name="payment_method" value="paypal" id="payment-method-paypal">Paypal
</label>
<label class="radio-inline">
    <input type="radio" name="payment_method" value="donorbank" id="payment-method-donorbank">Donor Bank
</label>  

我的代码生成如下输出:

<label class="radio-inline">
    <label for="payment-method-wepay">
        <input type="radio" name="payment_method" value="wepay" id="payment-method-wepay" checked="checked">WePay
    </label>
</label>
<label class="radio-inline">
    <label for="payment-method-paypal">
        <input type="radio" name="payment_method" value="paypal" id="payment-method-paypal">Paypal
    </label>
</label>
<label class="radio-inline">
    <label for="payment-method-donorbank"><input type="radio" name="payment_method" value="donorbank" id="payment-method-donorbank">Donor Bank
    </label>
</label>   

这里添加了一个额外的标签字段。如何删除这个额外标签?

2 个答案:

答案 0 :(得分:1)

除了class属性和标签上缺少的for属性外,您显示的内容几乎都是默认输出。所以你最想修改的是nestingLabel模板,肯定不是radioWrapper模板:

 'nestingLabel' =>
     '{{hidden}}<label class="radio-label"{{attrs}}>{{input}}{{text}}</label>'

如果您要删除for属性,那么您必须删除{{attrs}}占位符,这样就不会再向label元素添加其他属性。

答案 1 :(得分:0)

最后,使用@ndm提示解决了我的问题。最终解决方案如下所示

totalSeconds

希望此解决方案能够在将来帮助他人。