Сегодня утром я выполнил установку 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
? Что я упускаю / делаю неправильно / не понимаю?
Спасибо.