迁移CakePHP 2到3:保存按钮的前/后属性(表单助手)

将Cake
PHP 2.x迁移到3.x,在提交按钮CakePHP 2.x中有属性之后和之前,但这对CakePHP 3.x无效.

<?php
 echo $this->Form->submit(__('Save'), array(
    'div' => 'form-actions',
    'class' => 'btn btn-large btn-primary btn-save',
    'data-loading-text' => 'Please Wait...',
    'after' => '    ' . $this->Html->link(__('Cancel'), array('admin' => true, 'action' => 'index'), array('class' => 'btn btn-large'))
)); ?>

请帮助我,如何使用CakePHP 3.x获取提交按钮中的后续按钮?

最佳答案 您可以在创建提交时使用自定义模板.要使用自定义模板,您需要使用FormHelper :: input with’type’=> ‘submit’方法而不是FormHelper :: submit方法.

您想修改容器模板(submitContainer)以插入您的链接(并添加form-actions类,因为CakePHP 3中不存在div选项):

$after = $this->Html->link(__('Cancel'), 
    ['admin' => true, 'action' => 'index'], 
    ['class' => 'btn btn-large']
);
$this->Form->input (__('Save'), [
    'type'  => 'submit',
    'class' => 'btn btn-large btn-primary btn-save',
    'data-loading-text' => 'Please Wait...',
    'templates' => [
        'submitContainer' => '<div class="submit form-actions">{{content}}'.$after.'</div>'
    ]
]);

有一种方法到add additional template variables到一些容器模板(例如inputContainer),不幸的是截至目前(CakePHP 3.1.6)它不适用于submitContainer(这没有真正记录,但是看看FormHelper的来源,你可以看到对于提交输入,您永远不会达到the relevant code).

点赞