Я использую 3 пакета в своем приложении Laravel 5.8:
Они конфликтуют, потому что Backpack Base использует глобальный псевдоним для «Alert», настроенного на использование PrologueAlert.Посмотрите пример того, как он использует \Alert
здесь:
private function checkLicenseCodeExists()
{
if ($this->app->environment() != 'local' && !config('backpack.base.license_code')) {
\Alert::add('warning', "<strong>You're using unlicensed software.</strong> Please ask your web developer to <a target='_blank' href='http://backpackforlaravel.com'>purchase a license code</a> to hide this message.");
}
}
Источник: https://github.com/Laravel-Backpack/Base/blob/1.1.4/src/BaseServiceProvider.php#L264
Поскольку я еще не купил эту лицензию, я начал видеть ошибку, вызваннуюпотому что этот фрагмент кода пытался передать строку в Alert :: add (), но вызывал метод add()
в Styde \ Html \ Alert \ Container :: add (), который ожидает, что параметр является экземпляром Styde \Html \ Alert \ Message вместо вызова его в версии Alert от Prologue, которая принимает строку.Он называет неправильный «Оповещение»!
Несмотря на то, что мое приложение специально настроено на использование PrologueAlert для Alert
// config/app.php
'aliases' => [
...
'Alert' => Prologue\Alerts\Facades\Alert::class
]
Я обнаружил, что причина в том, что в версии 1.7 Стид переместил псевдонимы для своего пакета из защищенного $Переменная globalAliases в HTMLServiceProvider.php в секцию автообнаружения composer.json
"extra": {
"laravel": {
"providers": [
],
"aliases": {
"Field": "Styde\\Html\\Facades\\Field",
"Alert": "Styde\\Html\\Facades\\Alert",
"Menu": "Styde\\Html\\Facades\\Menu",
"Form": "Collective\\Html\\FormFacade",
"Html": "Collective\\Html\\HtmlFacade"
},
"dont-discover": [
"laravelcollective/html"
]
}
}
Источник: https://github.com/StydeNet/html/commit/f51138fb42bef458f3f0e101b98344162b7327ba#diff-b5d0ee8c97c7abd7e3fa29b9a27d1780
Теперь, похоже, мое приложение отдает приоритет псевдониму Стида "Оповещение "по поводу моего собственного значения набора приложений!
Кроме того, чтобы откатиться на использование версии 1.6 Styde, как я могу заставить Laravel расставить приоритеты моих собственных определенных псевдонимов над теми, которые были обнаружены через composer.json?