Страница 1 из 1

Как правильно изменить дефолтную разметку checkbox?

Добавлено: 2017.03.30, 12:34
undestroyer
Меняю в проекте стандартные чекбоксы на стилизованные. Где правильно переопределить разметку этого чекбокса для рендера через ActiveField? Прописывать в каждом чекбоксе его template нет желания.

Уточню сразу: есть один HTML макет для всех checkbox, его нужно использовать везде. Прописывать в каждом чекбоксе этот template займет несколько часов и появится сплошная копипаста

Код: Выделить всё

<div class="checkbox-container">
	<input class="checkbox-container__input" id="id" type="checkbox" name="Model[attribute]">
	<label class="checkbox-container__label" for="id">Отправить клиенту SMS
		<span class="checkbox-container__box"></span>
		<span class="checkbox-container__box-checked glyphicon glyphicon-ok"></span>
	</label>
</div>

Re: Как правильно изменить дефолтную разметку checkbox?

Добавлено: 2017.03.30, 13:16
De-Luxis

Re: Как правильно изменить дефолтную разметку checkbox?

Добавлено: 2017.03.30, 13:19
undestroyer
De-Luxis писал(а): 2017.03.30, 13:16 Попробуй http://icheck.fronteed.com/
Верстка у меня уже есть, осталось прикрутить эту разметку к 150 чекбоксам по всему проекту. Вопрос в том где ее нужно расположить и как правильно прописать?

Re: Как правильно изменить дефолтную разметку checkbox?

Добавлено: 2017.03.30, 13:53
za4me
Мне как-то надо было сменить шаблон на все input'ы, воспользовался DI (если правильно называю).
В bootstrap.php прописал:

Код: Выделить всё

\Yii::$container->set('yii\widgets\ActiveField', [
    'template' => "<div class='row'><div class='col-xs-4 col-md-3'>{label}</div><div class='col-xs-8 col-md-9'>\n{input}\n{hint}\n{error}</div></div>",
]);
Думаю вам стоит в эту сторону искать.

Re: Как правильно изменить дефолтную разметку checkbox?

Добавлено: 2017.03.30, 14:11
someweb
Теперь можно через конфиг

Код: Выделить всё

    'container' => [
        'definitions' => [
            'yii\bootstrap\ActiveField' => ['checkboxTemplate' => 'YOUR_TEMPLATE'],
        ],
    ],    

Re: Как правильно изменить дефолтную разметку checkbox?

Добавлено: 2017.03.30, 14:27
undestroyer
someweb писал(а): 2017.03.30, 14:11 Теперь можно через конфиг

Код: Выделить всё

    'container' => [
        'definitions' => [
            'yii\bootstrap\ActiveField' => ['checkboxTemplate' => 'YOUR_TEMPLATE'],
        ],
    ],    
Про DI знал, про конфиг DI новенькое, спасибо!

Теперь насчет моей разметки. Тут внутри <label> есть классы, на которых держится CSS "checkbox-container__label". Как через этот же DI задать создание класса для <label>? Не вижу конфигурации для $labelOptions из checkbox. Если я поправлю $labelOptions, то она залетит на все поля. Создать анонимную функцию для рендера тоже нельзя.

Код: Выделить всё

<div class="checkbox-container">
	<input class="checkbox-container__input" id="id" type="checkbox" name="Model[attribute]">
	<label class="checkbox-container__label" for="id">Отправить клиенту SMS
		<span class="checkbox-container__box"></span>
		<span class="checkbox-container__box-checked glyphicon glyphicon-ok"></span>
	</label>
</div>

Re: Как правильно изменить дефолтную разметку checkbox?

Добавлено: 2017.03.30, 14:39
someweb
Может тогда наследоваться от ActiveField и написать свой checkbox()?