В общем случае для разгрузки компонента вы можете использовать setComponent
, передавая второй параметр как null
. Пример:
Yii::app()->getModule('admin')->setComponent('bootstrap', null);
Однако в вашем случае, версия бутстраповского-расширения вы используете, уже регистрирует CSS/JS, как только компонент загружается . Поэтому, даже если вы разгрузите компонент, bootstrap css все равно будет включен, и стили использования будут по-прежнему применяться.
Но мы можем удалить css/js, зарегистрированный bootstrap, и таким образом удалить эффект компонента начальной загрузки. Самый простой способ сделать это путем сброса clientScript
, как уже обсуждалось в комментариях, и лучшее место для reset
clientScript
находится в actionError()
так:
public function actionError() {
if($error=Yii::app()->errorHandler->error) {
Yii::app()->clientScript->reset();
// ... more code ...
}
}
Почему это будет работать потому, что большинство функции register*
для регистрации css/js будут встречаться в просмотрах и макетах, поэтому любые зарегистрированные css/js будут загружены, но бутстрап будет опущен. Кроме того, любые виджеты, которые вы могли бы использовать, будут регистрировать свои css/js только тогда, когда они встречаются render
.
См Extensions/бутстраповских/компоненты/Bootstrap.php «s init()
:
if ($this->coreCss !== false)
$this->registerCoreCss();
if ($this->responsiveCss !== false)
$this->registerResponsiveCss();
if ($this->yiiCss !== false)
$this->registerYiiCss();
if ($this->enableJS !== false)
$this->registerCoreScripts();
С новыми версиями (с 1.0.1) расширения, вы необходимо зарегистрировать css/js явно.
Я не знаю, что это сработает, сделайте 'Yii :: app() -> clientScript-> reset()' inside' actionError() '. Это может очистить весь скрипт, зарегистрированный через 'clientScript' – dInGd0nG
@ dInGd0nG как раз собирался добавить это как ответ, он будет работать –
, но это проблема. Он очистит все зарегистрированные файлы скриптов. Мы хотим сбросить только файлы, зарегистрированные компонентом 'bootstrap' – dInGd0nG