Examples Bootstrap Version 4.5.2 + FriendsOfCake/bootstrap-ui
custom switch(raw html) reference
custom switch(helper use)
<?php $templates = [ 'customCheckboxContainer' => '<div class="form-group custom-control custom-switch {{type}}{{required}}">{{content}}{{help}}</div>', 'customCheckboxContainerError' => '<div class="form-group custom-control custom-switch {{type}}{{required}} is-invalid">{{content}}{{error}}{{help}}</div>', ]; ?> <?= $this->Form->create(null, ['class' => 'highlight']); ?> <?= $this->Form->control('Input Text'); ?> <?= $this->Form->control('Toggle this switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch3', 'id' => 'customSwitch3', 'custom' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->control('Disabled switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch4', 'id' => 'customSwitch4', 'custom' => true, 'disabled' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->submit(__('submit'), ['class' => 'btn btn-primary']) ?> <?= $this->Form->end() ?>
PHP(ctp)
<?php $templates = [ 'customCheckboxContainer' => '<div class="form-group custom-control custom-switch switch-md {{type}}{{required}}">{{content}}{{help}}</div>', 'customCheckboxContainerError' => '<div class="form-group custom-control custom-switch switch-md {{type}}{{required}} is-invalid">{{content}}{{error}}{{help}}</div>', ]; ?> <?= $this->Form->create(null, [ 'valueSources' => 'query', ]) ?> <?= $this->Form->control('Input Text'); ?> <?= $this->Form->control('Toggle this switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch5', 'id' => 'customSwitch5', 'custom' => true, 'class' => ' switch', 'templates' => $templates, ]);?> <?= $this->Form->control('Toggle this switch primary', [ 'type' => 'checkbox', 'name' => 'customSwitch6', 'id' => 'customSwitch6', 'custom' => true, 'class' => 'sw-primary switch', 'templates' => $templates, ]);?> <?= $this->Form->control('Toggle this switch secondary', [ 'type' => 'checkbox', 'name' => 'customSwitch7', 'id' => 'customSwitch7', 'custom' => true, 'class' => 'sw-secondary switch', 'templates' => $templates, ]);?> <?= $this->Form->control('Toggle this switch success', [ 'type' => 'checkbox', 'custom' => true, 'name' => 'customSwitch8', 'id' => 'customSwitch8', 'class' => 'sw-success switch', 'templates' => $templates, ]);?> <?= $this->Form->control('Toggle this switch info', [ 'type' => 'checkbox', 'name' => 'customSwitch9', 'id' => 'customSwitch9', 'custom' => true, 'class' => 'sw-info switch', 'templates' => $templates, ]);?> <?= $this->Form->control('Toggle this switch warning', [ 'type' => 'checkbox', 'name' => 'customSwitch10', 'id' => 'customSwitch10', 'custom' => true, 'class' => 'sw-warning switch', 'templates' => $templates, ]);?> <?= $this->Form->control('Toggle this switch danger', [ 'type' => 'checkbox', 'custom' => true, 'name' => 'customSwitch11', 'id' => 'customSwitch11', 'class' => 'sw-danger switch', 'templates' => $templates, ]);?> <?= $this->Form->control('Disabled switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch12', 'id' => 'customSwitch12', 'custom' => true, 'disabled' => true, 'class' => ' switch', 'templates' => $templates, ]);?> <?= $this->Form->submit(__('submit'), ['class' => 'btn btn-primary']) ?> <?= $this->Form->end() ?>
custom switch(helper use) inline
PHP(ctp)
<?php $templates = [ 'customCheckboxInlineContainer' => '<div class="form-group custom-control custom-switch custom-control-inline {{type}}{{required}}">{{content}}</div>', 'customCheckboxInlineContainerError' => '<div class="form-group custom-control custom-switch custom-control-inline {{type}}{{required}} is-invalid">{{content}}</div>', ]; ?> <?= $this->Form->create(null, [ 'class' => 'form-inline', 'valueSources' => 'query', // 'align' => 'inline', ]) ?> <?= $this->Form->control('Toggle this switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch13', 'id' => 'customSwitch13', 'custom' => true, 'inline' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->control('Disabled switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch14', 'id' => 'customSwitch14', 'custom' => true, 'inline' => true, 'disabled' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->end() ?>
PHP(ctp)
<?php $templates = [ 'customCheckboxInlineContainer' => '<div class="form-group custom-control custom-switch switch-md custom-control-inline {{type}}{{required}}">{{content}}</div>', 'customCheckboxInlineContainerError' => '<div class="form-group custom-control custom-switch switch-md custom-control-inline {{type}}{{required}} is-invalid">{{content}}</div>', ]; ?> <?= $this->Form->create(null, [ 'class' => 'form-inline', 'valueSources' => 'query', // 'align' => 'inline', ]) ?> <?= $this->Form->control('Toggle this switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch15', 'id' => 'customSwitch15', 'custom' => true, 'inline' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->control('Disabled switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch16', 'id' => 'customSwitch16', 'custom' => true, 'inline' => true, 'disabled' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->end() ?>
custom switch(helper use) horizontal
PHP(ctp)
<?php $templates = [ 'customCheckboxFormGroup' => '<div class="offset-md-2 col-md-10"><div class="custom-control custom-switch">{{input}}{{label}}</div>{{error}}{{help}}</div>', ]; ?> <?= $this->Form->create(null, [ 'valueSources' => 'query', 'align' => 'horizontal', ]) ?> <?= $this->Form->control('Input Text'); ?> <?= $this->Form->control('Toggle this switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch17', 'id' => 'customSwitch17', 'custom' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->control('Disabled switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch18', 'id' => 'customSwitch18', 'custom' => true, 'disabled' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->submit(__('submit'), ['class' => 'btn btn-primary']) ?> <?= $this->Form->end() ?>
custom switch(helper use) horizontal
PHP(ctp)
<?php $templates = [ 'customCheckboxFormGroup' => '<div class="offset-md-2 col-md-10"><div class="custom-control custom-switch switch-md">{{input}}{{label}}</div>{{error}}{{help}}</div>', ]; ?> <?= $this->Form->create(null, [ 'valueSources' => 'query', 'align' => 'horizontal', ]) ?> <?= $this->Form->control('Input Text'); ?> <?= $this->Form->control('Toggle this switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch19', 'id' => 'customSwitch19', 'custom' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->control('Disabled switch element', [ 'type' => 'checkbox', 'name' => 'customSwitch20', 'id' => 'customSwitch20', 'custom' => true, 'disabled' => true, 'class' => ' switch', 'hiddenField' => false, 'templates' => $templates, ]);?> <?= $this->Form->submit(__('submit'), ['class' => 'btn btn-primary']) ?> <?= $this->Form->end() ?>
switch-md用のスタイルシート
CSS
@charset "utf-8"; /* switch */ .custom-control.custom-switch.switch-md { padding-left: calc(calc(calc(1.9375rem * .92) * 2) + 2px); } .custom-switch.switch-md input { position: absolute; height: 1px; width: 1px; background: none; border: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; padding: 0; } .custom-switch.switch-md input + label { display: inline-block; } .custom-switch.switch-md input + .custom-control-label { min-width: calc(calc(1.9375rem * .92) * 2); height: calc(1.9375rem * .8); line-height: calc(1.9375rem * .8); /*text-indent: calc(calc(calc(0.5rem * .8) * 2) + .5rem);*/ } .custom-switch.switch-md input + .custom-control-label::before { top: 0px; left: calc(calc(calc(-1.9375rem * .92) * 2) - 2px); width: calc(calc(1.9375rem * .8) * 2); height: calc(1.9375rem * .8); border-radius: 1.9rem; } .custom-switch.switch-md input + .custom-control-label::after { top: 2px; left: calc(calc(-1.9375rem * .92) * 2); width: calc(calc(1.9375rem * .8) - calc(2px * 2)); height: calc(calc(1.9375rem * .8) - calc(2px * 2)); border-radius: 50%; } .custom-switch.switch-md .custom-control-input:checked ~ .custom-control-label::after { -webkit-transform: translateX(1.58rem); transform: translateX(1.58rem); } .custom-control.custom-control-inline.custom-switch { justify-content: flex-start; /*padding-left: 0;*/ } .custom-control.custom-control-inline.custom-switch > .custom-control-label { /*padding-left: calc(calc(1.9375rem * .9) * 2);*/ /*width: calc(100% - calc(calc(1.9375rem * .9) * 2));*/ } .sw-primary.custom-control-input ~ .custom-control-label::before { border-color: #007bff; } .sw-secondary.custom-control-input ~ .custom-control-label::before { border-color: #6c757d; } .sw-success.custom-control-input ~ .custom-control-label::before { border-color: #28a745; } .sw-info.custom-control-input ~ .custom-control-label::before { border-color: #17a2b8; } .sw-warning.custom-control-input ~ .custom-control-label::before { border-color: #ffc107; } .sw-danger.custom-control-input ~ .custom-control-label::before { border-color: #dc3545; } .sw-primary.custom-control-input:checked~.custom-control-label::before { } .sw-secondary.custom-control-input:checked~.custom-control-label::before { background-color: #6c757d; } .sw-success.custom-control-input:checked~.custom-control-label::before { background-color: #28a745; } .sw-info.custom-control-input:checked~.custom-control-label::before { background-color: #17a2b8; } .sw-warning.custom-control-input:checked~.custom-control-label::before { background-color: #ffc107; } .sw-danger.custom-control-input:checked~.custom-control-label::before { background-color: #dc3545; }