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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
undestroyer
Сообщения: 120
Зарегистрирован: 2014.01.06, 13:46

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

Сообщение 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>


undestroyer
Сообщения: 120
Зарегистрирован: 2014.01.06, 13:46

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

Сообщение undestroyer »

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

Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

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

Сообщение 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>",
]);
Думаю вам стоит в эту сторону искать.

someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

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

Сообщение someweb »

Теперь можно через конфиг

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

    'container' => [
        'definitions' => [
            'yii\bootstrap\ActiveField' => ['checkboxTemplate' => 'YOUR_TEMPLATE'],
        ],
    ],    
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.

undestroyer
Сообщения: 120
Зарегистрирован: 2014.01.06, 13:46

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

Сообщение 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>

someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

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

Сообщение someweb »

Может тогда наследоваться от ActiveField и написать свой checkbox()?
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.

Ответить