Вызов метода undefined Illuminate\Foundation\Application:: bindShared()
Я только что обновил Laravel от 5.0 до 5.1.
Я получаю эту ошибку:
Call to undefined method Illuminate\Foundation\Application::bindShared()
Итак, после некоторых поисков мне нужно изменить bindShared на singleton.
Я могу сделать это в vendor/illuminate/html/HtmlServiceProvider.php
Проблема в том, что происходит, когда другой разработчик работает над проектом и выполняет установку композитора или я развертываю сервер.
Как сохранить изменения в файлах в папке поставщика?
Ответы
Ответ 1
Хорошо, основываясь на вашем комментарии, я вижу вашу проблему (я должен был заметить это раньше, когда вы упоминаете компонент HTML в своем вопросе.
Компонент illuminate/html
больше не является частью самого Laravel и еще не обновлен в соответствии со стандартами 5.1. На самом деле, я уверен, что теперь он официально оставлен Тейлором.
Однако вы можете заменить требование illuminate/html
laravelcollective/html - что официальное сообщество захватит подсветку /html и должно быть заменой замены.
Не нужно возиться с вещами в vendor
!
Ответ 2
Illuminate/html
заброшен. Вместо этого используйте Collective/html
.
Чтобы установить его, используйте следующие
composer require "laravelcollective/html":"^5.2.0"
Затем в app/app.php файл изменится/добавится как следующий
для поставщиков
Collective\Html\HtmlServiceProvider::class
и для псевдонимов
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
Ответ 3
Следующие функции Laravel устарели и будут полностью удалены с выпуском Laravel 5.2 в декабре 2015 года:...
Метод bindShared контейнера службы устарел в пользу однотонного метода....
ref: https://laravel.com/docs/5.1/upgrade
Итак, например, начиная с L5.1, вы можете спокойно изменить:
$this->app->bindShared(UserObserver::class, function ()
{
// ...
});
в
$this->app->singleton(UserObserver::class, function ()
{
// ...
});
Ответ 4
Я разработчик Rails и новичок в laravel и только в первый же день и застрял в этой проблеме с Builder. Я прошел много дискуссий и сообщений, но получил свое решение на https://laravelcollective.com/docs/5.0/html
Чтобы использовать конструктор форм бланка (форма:: открытая), нам нужно изменить наш composer.json и добавить "laravelcollective/html": "~5.0"
в блок require.
Затем запустите обновление композитора, потому что для вашего проекта будут доступны только новые зависимости.
Теперь добавьте команду 'Collective\Html\HtmlServiceProvider', внутри блока config/app.php внутри блока также нужно добавить
'aliases' => [
// ...
'Form' => 'Collective\Html\FormFacade',
'Html' => 'Collective\Html\HtmlFacade',
// ...
],
внутри config/app.php в блоке псевдонимов.
запустить php artisan
Наслаждайтесь изготовителем форм с лезвием.
Ответ 5
Эта проблема возникает из-за метода bindShared(), просто измените его на singleton()
Файл находится здесь:/projectname/vendor/illuminate/html/HtmlServiceProvider.php
изменить строку: 36 и 49