YIi2 + bootstrap4

Разберем на примере кейса, когда у нас есть приложение, разбитое на модули. Например есть два модуля admin и library. Админка и публичный интерфейс. Админка сделана на базе бесплатного шаблона, использующий bootstrap 3, а для публичной части верстальщик прислал верстку на базе bootstrap 4.

Если копнуть во внутренности asset менеджера yii2 то можем увидеть что там есть пакеты 

yii\bootstrap\BootstrapAsset

Отвечает за подключение стилей bootstrap

yii\bootstrap\BootstrapPluginAsset

Отвечает за подключение скриптов bootstrap

В свою очередь различные виджеты GridView, NavBar и т.д. используют эти пакеты. Поэтому, если мы подключим bootstrap 4 например так

<link rel="stylesheet" href="bootstrap4.css">

Или любым другим способом, предусмотренным фрэймворком. И на странице выведем GridView, то asset менеджер подключить и bootstrap 3 из пакета BootstrapAsset. В итоге получиться каша из стилей.

Для решения э той проблемы надо переопределить конфигурацию пакетов. Для этого в классе модуля, в функцию init добавим код:

public function init()
{
$bootstrapConfig = [
'sourcePath' => null,
'basePath' => '@webroot',
'baseUrl' => '@web',
'css' => ['css/bootstrap4.css'],
];

$bootstrapPluginConfig = [
'sourcePath' => null,
'basePath' => '@webroot'