Почему я получаю ошибку «Class 'App \ Providers \ Form' not found» в Laravel 5.5.43?

Сегодня утром я установил Laravel 5.5.43 с помощью следующей команды Composer:

composer create-project laravel/laravel project-name

Затем я выполнил следующую команду в папке проекта, чтобы установить Laravel Collective:

composer require "laravelcollective/html":"^5.4.0"

Затем я добавил следующее в providers в config/app.php:

Collective\Html\HtmlServiceProvider::class,

И я добавил следующее под aliases в config/app.php:

'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,

После этого я хотел создать собственные компоненты формы, поэтому я выполнил следующую команду Artisan:

php artisan make:provider FormServiceProvider

И в этом новом файле провайдера я добавил к методу boot следующую строку:

Form::component('customText', 'components.form.text', ['name', 'value' => null, 'attributes' => []]);

Наконец, я добавил в providers в config/app.php следующее:

App\Providers\FormServiceProvider::class,

Но когда я это сделаю и обновлю экземпляр Laravel в браузере, я получаю следующую ошибку:

Class 'App\Providers\Form' not found

Однако, если я добавлю следующее вверху файла FormServiceProvider.php, это сработает:

use Collective\Html\FormFacade AS Form;

Я понимаю концепцию пространств имен и почему это заставляет метод Form::component в методе boot в файле правильно работать, но я не понимаю, почему мне вообще нужно добавить эту строку use в файл.

Разве строка 'Form' => Collective\Html\FormFacade::class, в массиве aliases в файле app.php не должна делать это за меня, поэтому мне вообще не нужно добавлять строку use в FormServiceProvider.php? Что я упускаю / делаю неправильно / не понимаю?

Спасибо.

запустить php artisan config: cache

Sreejith BS 18.09.2018 13:58

Псевдоним - это просто «ярлык». Вместо того, чтобы писать use Collective\Html\FormFacade каждый раз, когда вы хотите его использовать, вы можете просто использовать свой псевдоним: use Form.

brombeer 18.09.2018 13:59

kerbholz, да, ты прав. Просто добавьте use Form; в файл. Однако полное удаление линии приводит к ее разрыву. Спасибо.

HartleySan 18.09.2018 14:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
1 008
2

Ответы 2

Выполните команду ниже:

php artisan config:cache
php artisan cache:clear

@HartleySan: Если мой ответ работает для вас, пожалуйста, примите мой ответ

user10186369 18.09.2018 14:15

Саураб Дхаривал, к сожалению, не сработал. Я пробовал, но если я удалю use Collective\Html\FormFacade AS Form, то все равно получаю ошибку. Спасибо.

HartleySan 18.09.2018 14:21

Мне, вероятно, следует просто удалить этот вопрос, но простой ответ заключался в том, чтобы добавить следующее в начало файла FormServiceProvider.php:

use Form;

Спасибо.

Это сработало для меня. Очистка кеша вернула ту же ошибку, что и Laravel, столкнувшись с той же проблемой. Поставщик услуг требовал наличия в нем класса Form. Спасибо @HartleySan

mmmdearte 06.02.2020 19:38

Другие вопросы по теме