Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Rodman
Сообщения: 52
Зарегистрирован: 2018.06.01, 20:33
Контактная информация:

Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Сообщение Rodman »

Добрый день, коллеги

Занимаюсь обновлением проекта и перевожу его на bootstrap4
мой composer.json

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

{
    "name": "yiisoft/yii2-app-advanced",
    "description": "Yii 2 Advanced Project Template",
    "keywords": ["yii2", "framework", "advanced", "project template"],
    "homepage": "http://www.yiiframework.com/",
    "type": "project",
    "license": "BSD-3-Clause",
    "support": {
        "issues": "https://github.com/yiisoft/yii2/issues?state=open",
        "forum": "http://www.yiiframework.com/forum/",
        "wiki": "http://www.yiiframework.com/wiki/",
        "irc": "irc://irc.freenode.net/yii",
        "source": "https://github.com/yiisoft/yii2"
    },
    "minimum-stability": "stable",
    "require": {
        "php": ">=7.0",
        "yiisoft/yii2": "^2.0.16",
        "yiisoft/yii2-swiftmailer": "2.1.2",
        "yiisoft/yii2-httpclient": "^2.0.11",
        "yiisoft/yii2-bootstrap4": "^2.0.5",
        "yiisoft/yii2-redis": "^2.0.9",
        "fxp/composer-asset-plugin": "^1.4.5",
        "skeeks/yii2-assets-auto-compress": "^1.4.2",
        "codemix/yii2-localeurls": "^1.7.1",
        "yii2mod/yii2-scheduling": "^1.1.1",
        "onmotion/yii2-widget-apexcharts": "^1.0",
        "wfstudioru/yii2-yandex-translate-api": "dev-master",
        "phpoffice/phpspreadsheet": "^1.6.0",
        "phpoffice/phpexcel": "^1.8.2",
        "bajadev/yii2-dynamicform": "^2.2.2",
        "hguenot/yii2-gsftp": "^1.1",
        "setasign/fpdf": "^1.8.1",
        "kartik-v/yii2-widget-select2": "^2.1.3",
        "kartik-v/yii2-widget-datepicker": "^1.4",
        "kartik-v/yii2-widget-timepicker": "^1.0",
        "kartik-v/yii2-grid": "^3.3",
        "kartik-v/yii2-date-range": "^1.7",
        "kartik-v/yii2-bootstrap4-dropdown": "^1.0",
        "kartik-v/yii2-editable": "^1.0",
        "kartik-v/yii2-widget-activeform": "^1.5",
        "kartik-v/yii2-widget-fileinput": "^1.0"
    },
    "require-dev": {
        "yiisoft/yii2-debug": "^2.1.5",
        "yiisoft/yii2-gii": "^2.1.0",
        "yiisoft/yii2-faker": "^2.0.4",
        "phpstan/phpstan": "^0.7"
    },
    "config": {
        "process-timeout": 1800,
        "fxp-asset":{
            "installer-paths": {
                "npm-asset-library": "vendor/npm",
                "bower-asset-library": "vendor/bower"
            }
        }
    }
}
в AppAsset.php

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

<?php

namespace cabinet\assets;

use yii\web\AssetBundle;

/**
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class AppAsset extends AssetBundle
{
    public $jsOptions = ['position' => \yii\web\View::POS_HEAD];
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        '/plugins/font-awesome/css/font-awesome.min.css',
        'https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css',
        ...
    ];
    public $js = [
        '/plugins/jquery/jquery.min.js',
        'https://code.jquery.com/ui/1.12.1/jquery-ui.min.js',
        'https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js',
	...
        '/plugins/js/main.js',
        '/plugins/js/translit.js',
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap4\BootstrapPluginAsset',
    ];
}
т.е. у меня в проекте используются расширения kartik

и так вот в результате на одной из страниц

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

2019-07-17 11:35:00 [127.0.0.1][3][lo1iiqguptkovh3iee2hugb46p][error][yii\base\InvalidConfigException] ReflectionException: Class yii\bootstrap\BootstrapAsset does not exist in /var/www/project/vendor/yiisoft/yii2/di/Container.php:431
Stack trace:
#0 /var/www/project/vendor/yiisoft/yii2/di/Container.php(431): ReflectionClass->__construct('yii\\bootstrap\\B...')
#1 /var/www/project/vendor/yiisoft/yii2/di/Container.php(365): yii\di\Container->getDependencies('yii\\bootstrap\\B...')
#2 /var/www/project/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('yii\\bootstrap\\B...', Array, Array)
#3 /var/www/project/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('yii\\bootstrap\\B...', Array, Array)
#4 /var/www/project/vendor/yiisoft/yii2/web/AssetManager.php(264): yii\BaseYii::createObject(Array)
#5 /var/www/project/vendor/yiisoft/yii2/web/AssetManager.php(237): yii\web\AssetManager->loadBundle('yii\\bootstrap\\B...', Array, true)
#6 /var/www/project/vendor/yiisoft/yii2/web/View.php(286): yii\web\AssetManager->getBundle('yii\\bootstrap\\B...')
#7 /var/www/project/vendor/yiisoft/yii2/web/View.php(291): yii\web\View->registerAssetBundle('yii\\bootstrap\\B...', NULL)
#8 /var/www/project/vendor/yiisoft/yii2/web/View.php(291): yii\web\View->registerAssetBundle('kartik\\popover\\...', NULL)
#9 /var/www/project/vendor/yiisoft/yii2/web/AssetBundle.php(125): yii\web\View->registerAssetBundle('kartik\\editable...')
#10 /var/www/project/vendor/kartik-v/yii2-editable/src/Editable.php(582): yii\web\AssetBundle::register(Object(yii\web\View))
#11 /var/www/project/vendor/kartik-v/yii2-editable/src/Editable.php(670): kartik\editable\Editable->registerAssets()
#12 /var/www/project/vendor/kartik-v/yii2-editable/src/Editable.php(565): kartik\editable\Editable->initEditable()
#13 /var/www/project/vendor/yiisoft/yii2/base/BaseObject.php(109): kartik\editable\Editable->init()
#14 [internal function]: yii\base\BaseObject->__construct(Array)
#15 /var/www/project/vendor/yiisoft/yii2/di/Container.php(384): ReflectionClass->newInstanceArgs(Array)
#16 /var/www/project/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('kartik\\editable...', Array, Array)
#17 /var/www/project/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('kartik\\editable...', Array, Array)
#18 /var/www/project/vendor/yiisoft/yii2/base/Widget.php(137): yii\BaseYii::createObject(Array)
#19 /var/www/project/vendor/kartik-v/yii2-grid/src/EditableColumn.php(163): yii\base\Widget::widget(Array)
#20 /var/www/project/vendor/kartik-v/yii2-grid/src/DataColumn.php(242): kartik\grid\EditableColumn->renderDataCellContent(Object(common\models\SearchStop), 3, 0)
#21 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(525): kartik\grid\DataColumn->renderDataCell(Object(common\models\SearchStop), 3, 0)
#22 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(494): yii\grid\GridView->renderTableRow(Object(common\models\SearchStop), 3, 0)
#23 /var/www/project/vendor/kartik-v/yii2-grid/src/GridView.php(1279): yii\grid\GridView->renderTableBody()
#24 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(358): kartik\grid\GridView->renderTableBody()
#25 /var/www/project/vendor/yiisoft/yii2/widgets/BaseListView.php(160): yii\grid\GridView->renderItems()
#26 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(326): yii\widgets\BaseListView->renderSection('{items}')
#27 /var/www/project/vendor/yiisoft/yii2/widgets/BaseListView.php(135): yii\grid\GridView->renderSection('{items}')
#28 [internal function]: yii\widgets\BaseListView->yii\widgets\{closure}(Array)
#29 /var/www/project/vendor/yiisoft/yii2/widgets/BaseListView.php(138): preg_replace_callback('/{\\w+}/', Object(Closure), '{summary}\n<div ...')
#30 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(301): yii\widgets\BaseListView->run()
#31 /var/www/project/vendor/kartik-v/yii2-grid/src/GridView.php(1201): yii\grid\GridView->run()
#32 /var/www/project/vendor/yiisoft/yii2/base/Widget.php(140): kartik\grid\GridView->run()
#33 /var/www/projvelopment/project/frontend/views/groups/black-list.php(123): yii\base\Widget::widget(Array)
#34 /var/www/project/vendor/yiisoft/yii2/base/View.php(348): require('/var/www/proj...')
#35 /var/www/project/vendor/yiisoft/yii2/base/View.php(257): yii\base\View->renderPhpFile('/var/www/proj...', '[<span class="s...')
#36 /var/www/project/vendor/yiisoft/yii2/base/View.php(156): yii\base\View->renderFile('/var/www/proj...', Array, Object(frontend\controllers\GroupsController))
#37 /var/www/project/vendor/yiisoft/yii2/base/Controller.php(384): yii\base\View->render('black-list', Array, Object(frontend\controllers\GroupsController))
#38 /var/www/projvelopment/project/frontend/controllers/GroupsController.php(341): yii\base\Controller->render('black-list', Array)
#39 [internal function]: frontend\controllers\GroupsController->actionBlackList()
#40 /var/www/project/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#41 /var/www/project/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#42 /var/www/project/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('black-list', Array)
#43 /var/www/project/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('groups/black-li...', Array)
#44 /var/www/project/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#45 /var/www/projvelopment/project/frontend/web/index.php(18): yii\base\Application->run()
#46 {main}

Next yii\base\InvalidConfigException: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset". in /var/www/project/vendor/yiisoft/yii2/di/Container.php:433
Stack trace:
#0 /var/www/project/vendor/yiisoft/yii2/di/Container.php(365): yii\di\Container->getDependencies('yii\\bootstrap\\B...')
#1 /var/www/project/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('yii\\bootstrap\\B...', Array, Array)
#2 /var/www/project/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('yii\\bootstrap\\B...', Array, Array)
#3 /var/www/project/vendor/yiisoft/yii2/web/AssetManager.php(264): yii\BaseYii::createObject(Array)
#4 /var/www/project/vendor/yiisoft/yii2/web/AssetManager.php(237): yii\web\AssetManager->loadBundle('yii\\bootstrap\\B...', Array, true)
#5 /var/www/project/vendor/yiisoft/yii2/web/View.php(286): yii\web\AssetManager->getBundle('yii\\bootstrap\\B...')
#6 /var/www/project/vendor/yiisoft/yii2/web/View.php(291): yii\web\View->registerAssetBundle('yii\\bootstrap\\B...', NULL)
#7 /var/www/project/vendor/yiisoft/yii2/web/View.php(291): yii\web\View->registerAssetBundle('kartik\\popover\\...', NULL)
#8 /var/www/project/vendor/yiisoft/yii2/web/AssetBundle.php(125): yii\web\View->registerAssetBundle('kartik\\editable...')
#9 /var/www/project/vendor/kartik-v/yii2-editable/src/Editable.php(582): yii\web\AssetBundle::register(Object(yii\web\View))
#10 /var/www/project/vendor/kartik-v/yii2-editable/src/Editable.php(670): kartik\editable\Editable->registerAssets()
#11 /var/www/project/vendor/kartik-v/yii2-editable/src/Editable.php(565): kartik\editable\Editable->initEditable()
#12 /var/www/project/vendor/yiisoft/yii2/base/BaseObject.php(109): kartik\editable\Editable->init()
#13 [internal function]: yii\base\BaseObject->__construct(Array)
#14 /var/www/project/vendor/yiisoft/yii2/di/Container.php(384): ReflectionClass->newInstanceArgs(Array)
#15 /var/www/project/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('kartik\\editable...', Array, Array)
#16 /var/www/project/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('kartik\\editable...', Array, Array)
#17 /var/www/project/vendor/yiisoft/yii2/base/Widget.php(137): yii\BaseYii::createObject(Array)
#18 /var/www/project/vendor/kartik-v/yii2-grid/src/EditableColumn.php(163): yii\base\Widget::widget(Array)
#19 /var/www/project/vendor/kartik-v/yii2-grid/src/DataColumn.php(242): kartik\grid\EditableColumn->renderDataCellContent(Object(common\models\SearchStop), 3, 0)
#20 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(525): kartik\grid\DataColumn->renderDataCell(Object(common\models\SearchStop), 3, 0)
#21 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(494): yii\grid\GridView->renderTableRow(Object(common\models\SearchStop), 3, 0)
#22 /var/www/project/vendor/kartik-v/yii2-grid/src/GridView.php(1279): yii\grid\GridView->renderTableBody()
#23 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(358): kartik\grid\GridView->renderTableBody()
#24 /var/www/project/vendor/yiisoft/yii2/widgets/BaseListView.php(160): yii\grid\GridView->renderItems()
#25 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(326): yii\widgets\BaseListView->renderSection('{items}')
#26 /var/www/project/vendor/yiisoft/yii2/widgets/BaseListView.php(135): yii\grid\GridView->renderSection('{items}')
#27 [internal function]: yii\widgets\BaseListView->yii\widgets\{closure}(Array)
#28 /var/www/project/vendor/yiisoft/yii2/widgets/BaseListView.php(138): preg_replace_callback('/{\\w+}/', Object(Closure), '{summary}\n<div ...')
#29 /var/www/project/vendor/yiisoft/yii2/grid/GridView.php(301): yii\widgets\BaseListView->run()
#30 /var/www/project/vendor/kartik-v/yii2-grid/src/GridView.php(1201): yii\grid\GridView->run()
#31 /var/www/project/vendor/yiisoft/yii2/base/Widget.php(140): kartik\grid\GridView->run()
#32 /var/www/projvelopment/project/frontend/views/groups/black-list.php(123): yii\base\Widget::widget(Array)
#33 /var/www/project/vendor/yiisoft/yii2/base/View.php(348): require('/var/www/proj...')
#34 /var/www/project/vendor/yiisoft/yii2/base/View.php(257): yii\base\View->renderPhpFile('/var/www/proj...', '[<span class="s...')
#35 /var/www/project/vendor/yiisoft/yii2/base/View.php(156): yii\base\View->renderFile('/var/www/proj...', Array, Object(frontend\controllers\GroupsController))
#36 /var/www/project/vendor/yiisoft/yii2/base/Controller.php(384): yii\base\View->render('black-list', Array, Object(frontend\controllers\GroupsController))
#37 /var/www/projvelopment/project/frontend/controllers/GroupsController.php(341): yii\base\Controller->render('black-list', Array)
#38 [internal function]: frontend\controllers\GroupsController->actionBlackList()
#39 /var/www/project/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#40 /var/www/project/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#41 /var/www/project/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('black-list', Array)
#42 /var/www/project/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('groups/black-li...', Array)
#43 /var/www/project/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#44 /var/www/projvelopment/project/frontend/web/index.php(18): yii\base\Application->run()
#45 {main}
2019-07-17 11:34:58 [127.0.0.1][3][lo1iiqguptkovh3iee2hugb46p][info][application] $_GET = []

$_POST = []

$_FILES = []

$_COOKIE = [
    '_cmsIdentity' => '22a9c1076eb9f524fbaa1e3e1f90d339f8bd7622ad62cae80c33b0a520e59fefa:2:{i:0;s:12:\"_cmsIdentity\";i:1;s:16:\"[3,null,2592000]\";}'
    '_csrf' => '4b09c37a7b2cfd79a0baa28849455cb44a094ca45218cba5976da9d827e9e5c7a:2:{i:0;s:5:\"_csrf\";i:1;s:32:\"kXKHwE8hWYkAgrlg9jcAFSknvh-X5Pkj\";}'
    'PHPSESSID' => 'lo1iiqguptkovh3iee2hugb46p'
]

$_SESSION = [
    '__flash' => []
    '__id' => 3
    '__expire' => 1566041699
]

$_SERVER = [
    'USER' => 'www-data'
    'HOME' => '/var/www'
    'HTTP_CACHE_CONTROL' => 'max-age=0'
    'HTTP_UPGRADE_INSECURE_REQUESTS' => '1'
    'HTTP_COOKIE' => '_cmsIdentity=22a9c1076eb9f524fbaa1e3e1f90d339f8bd7622ad62cae80c33b0a520e59fefa%3A2%3A%7Bi%3A0%3Bs%3A12%3A%22_cmsIdentity%22%3Bi%3A1%3Bs%3A16%3A%22%5B3%2Cnull%2C2592000%5D%22%3B%7D; _csrf=4b09c37a7b2cfd79a0baa28849455cb44a094ca45218cba5976da9d827e9e5c7a%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22kXKHwE8hWYkAgrlg9jcAFSknvh-X5Pkj%22%3B%7D; PHPSESSID=lo1iiqguptkovh3iee2hugb46p'
    'HTTP_CONNECTION' => 'keep-alive'
    'HTTP_ACCEPT_ENCODING' => 'gzip, deflate'
    'HTTP_ACCEPT_LANGUAGE' => 'en-US,en;q=0.5'
    'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
    'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0'
    'HTTP_HOST' => 'localhost'
    'REDIRECT_STATUS' => '200'
    'SERVER_NAME' => 'localhost'
    'SERVER_PORT' => '80'
    'SERVER_ADDR' => '127.0.0.1'
    'REMOTE_PORT' => '42196'
    'REMOTE_ADDR' => '127.0.0.1'
    'SERVER_SOFTWARE' => 'nginx/1.15.9'
    'GATEWAY_INTERFACE' => 'CGI/1.1'
    'REQUEST_SCHEME' => 'http'
    'SERVER_PROTOCOL' => 'HTTP/1.1'
    'DOCUMENT_ROOT' => '/var/www/project/frontend/web'
    'DOCUMENT_URI' => '/index.php'
    'REQUEST_URI' => '/ru/groups/black-list'
    'SCRIPT_NAME' => '/index.php'
    'CONTENT_LENGTH' => ''
    'CONTENT_TYPE' => ''
    'REQUEST_METHOD' => 'GET'
    'QUERY_STRING' => ''
    'SCRIPT_FILENAME' => '/var/www/project/frontend/web/index.php'
    'FCGI_ROLE' => 'RESPONDER'
    'PHP_SELF' => '/index.php'
    'REQUEST_TIME_FLOAT' => 1563363298.7655
    'REQUEST_TIME' => 1563363298
]
в params.php

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

<?php
return [
    ...
    'bsVersion' => '4.x',
    'bsDependencyEnabled' => false,
];
Подскажите плиз, как мне определить правильно этот компонент / класс, чтобы все красиво на bootstrap 4 все завелось? Где я что то упустил?

Спасибо
Последний раз редактировалось Rodman 2019.07.20, 22:51, всего редактировалось 1 раз.
masson
Сообщения: 545
Зарегистрирован: 2012.07.03, 15:59

Re: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Сообщение masson »

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

InvalidConfigException: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset"
Проверяйте где у вас BootstrapAsset
Rodman
Сообщения: 52
Зарегистрирован: 2018.06.01, 20:33
Контактная информация:

Re: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Сообщение Rodman »

А можно детальнее?
Эта ошибка у меня не везде, а на некоторых страницах... Значит, что то тут индивидуально.

Где мне проверять? Как должно быть?
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Сообщение Loveorigami »

Смотрите код этих страниц. Какие виджеты используются.
Точнее - по логам - какой то виджет в гриде.

Один из них стоит в зависимости от yii\bootstrap\BootstrapAsset.
Поищите обычным поиском по фразе yii\bootstrap\BootstrapAsset среди своих виджетов - самое простое.
Rodman
Сообщения: 52
Зарегистрирован: 2018.06.01, 20:33
Контактная информация:

Re: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Сообщение Rodman »

Поиск ничего не дает, ведь ошибка так и звучит - что не определен BootstrapAsset

Вот он ругается - https://prnt.sc/ogbs8k
это кнопка на gridview

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

  [
                                'class' => \yii\grid\ActionColumn::className(),
                                'template' => '{delete}',
                                'buttons' => [
                                    'delete' => function ($url, $model, $key) {

                                        return  Html::a('Delete', $url, ['class' => 'bg-red label']);

                                    } <--- вот на эту строку ругается, как то
                                ]
                            ]
masson
Сообщения: 545
Зарегистрирован: 2012.07.03, 15:59

Re: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Сообщение masson »

В AssetBundle у вас написано 'yii\bootstrap4\BootstrapPluginAsset', значит д.б. 'yii\bootstrap4\BootstrapAsset',
А где у вас ссылка на старый BS осталась - это уже хз.

Проверьте код виджетов которые на этой странице отрисовываются. Судя по логам это editable & popover
Rodman
Сообщения: 52
Зарегистрирован: 2018.06.01, 20:33
Контактная информация:

Re: Failed to instantiate component or class "yii\bootstrap\BootstrapAsset".

Сообщение Rodman »

Вот как ругается
https://prnt.sc/ogc70l
https://prnt.sc/ogc7h9

сейчас пороюсь
Ответить