Миграция CakePHP 2 на 3: атрибут атрибута кнопки «Сохранить» до / после (помощник по формам)

Миграция CakePHP 2.x в 3.x, в кнопке отправки CakePHP 2.x есть атрибут after и before, но это не работает на 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?

4

Решение

Вы можете использовать обычай template когда вы создаете свой submit, Использовать кастом template, вам нужно использовать FormHelper::input с 'type' => 'submit' метод вместо FormHelper::submit метод.

Вы хотите изменить шаблон контейнера (submitContainer), чтобы вставить вашу ссылку (и добавить form-actions класс, потому что div опция не существует в CakePHP 3):

$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>'
]
]);

Есть способ добавить дополнительные переменные шаблона в шаблон некоторых контейнеров (например, inputContainer), к сожалению, на данный момент (CakePHP 3.1.6) он не работает для submitContainer (это на самом деле не задокументировано, но, глядя на источник FormHelper Вы можете видеть это для submit вход, вы никогда не достигнете соответствующий код).

2

Другие решения

Других решений пока нет …