Подтвердить что ты не робот

Вызов метода 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

Проблема в том, что происходит, когда другой разработчик работает над проектом и выполняет установку композитора или я развертываю сервер.

Как сохранить изменения в файлах в папке поставщика?

4b9b3361

Ответ 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