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

时间:2015-12-23 05:23:14

标签: php cakephp cakephp-3.x

将CakePHP 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获取提交按钮中的后续按钮?

1 个答案:

答案 0 :(得分:2)

您可以在创建template时使用自定义submit。要使用自定义template,您需要使用FormHelper::input '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的来源,您可以看到,对于submit输入,您永远不会到达the relevant code