Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CakePHP 3更改单选按钮输入模板_Php_Cakephp_Cakephp 3.0 - Fatal编程技术网

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

使用CakePHP 3更改单选按钮输入模板,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我想改变结构,但它不起作用,它总是相同的结构。如何解决我的问题 <?php $default = 'wepay'; $options = array('wepay' => 'WePay', 'paypal' => 'Paypal', 'donorbank' => 'Donor Bank'); echo $this->Form->input('payment_method', [ 'templates' => [ 'radioWr

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

 <?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>  
我的代码生成如下输出:


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

除了标签上的class属性和缺少的for属性外,您显示的几乎是默认输出。因此,您最想修改的可能是nestingLabel模板,而不是radioWrapper模板:


如果要删除for属性,则必须删除{{attrs}}占位符,这样就无法向label元素添加更多属性。

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

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

希望此解决方案将来对其他人有所帮助。

我想删除这样的标签。有可能吗?@Faisal我真的不明白你的要求。要删除for属性吗?是的,带标签tag@Faisal在这种情况下,从模板中删除{{attrs}}。
 'nestingLabel' =>
     '{{hidden}}<label class="radio-label"{{attrs}}>{{input}}{{text}}</label>'
<?php
$default = 'wepay';
$options = array('wepay' => 'WePay', 'paypal' => 'Paypal', 'donorbank' => 'Donor Bank');
echo $this->Form->input('payment_method', [
    'nestingLabel' =>
         '{{hidden}}<label class="radio-inline"{{attrs}}>{{input}}{{text}}</label>',
    'type'      => 'radio',
    'options'   => $options,
    'default'   => $default
]);
?>