Сегодня утром я установил 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? Что я упускаю / делаю неправильно / не понимаю?
Спасибо.
Псевдоним - это просто «ярлык». Вместо того, чтобы писать use Collective\Html\FormFacade каждый раз, когда вы хотите его использовать, вы можете просто использовать свой псевдоним: use Form.
kerbholz, да, ты прав. Просто добавьте use Form; в файл. Однако полное удаление линии приводит к ее разрыву. Спасибо.






Выполните команду ниже:
php artisan config:cache
php artisan cache:clear
@HartleySan: Если мой ответ работает для вас, пожалуйста, примите мой ответ
Саураб Дхаривал, к сожалению, не сработал. Я пробовал, но если я удалю use Collective\Html\FormFacade AS Form, то все равно получаю ошибку. Спасибо.
Мне, вероятно, следует просто удалить этот вопрос, но простой ответ заключался в том, чтобы добавить следующее в начало файла FormServiceProvider.php:
use Form;
Спасибо.
Это сработало для меня. Очистка кеша вернула ту же ошибку, что и Laravel, столкнувшись с той же проблемой. Поставщик услуг требовал наличия в нем класса Form. Спасибо @HartleySan
запустить php artisan config: cache