#php #laravel #laravel-blade #laravel-livewire
#php #laravel #laravel-blade #laravel-livewire
Вопрос:
Я разрабатываю локально на Mac. Последняя версия Big Sur.
Сегодня я отправился развертывать свое приложение для производства через сервер Ubuntu через Forge и получил сообщение об ошибке, которую я никогда раньше не видел, и не могу найти ответ в Интернете. Я вижу, что МНОГИЕ люди жалуются на это, но все, что кто-либо сказал в других ответах, — это ссылки на проблемы, которые на самом деле не имеют решений или даже объяснений, поэтому я задаю новый вопрос.
Точная ошибка заключается в следующем; Unable to locate a class or view for component [layouts.base]. (View: /home/forge/default/releases/20201204084441/resources/views/layouts/app.blade.php)
В моем приложении у меня есть; appViewComponentsLayoutsApp.php
который выглядит так;
<?php
namespace AppViewComponentsLayouts;
use IlluminateViewComponent;
class App extends Component
{
public function render()
{
return view('layouts.app');
}
}
Тогда у меня также есть;
resourcesviewslayoutsapp.blade.php
<x-layouts.base>
<!-- contents -->
</x-layouts.base>
(Также почти то же самое для base)
Работает безупречно на Mac. Как только я развертываю его в Ubuntu, я получаю сообщение об ошибке выше, что он «не может найти класс или представление» с этими именами.
Может кто-нибудь, пожалуйста, проинструктировать меня о том, как я могу это исправить, поскольку пока я понятия не имею, и, несмотря на то, что я знаю, что чувствительность к регистру, вероятно, является проблемой в соответствии с другими вопросами по этому поводу, я не могу найти никакого реального решения или способа решить эту проблему.
Комментарии:
1. попробуйте
composer dump-autoload
2. @KamleshPaul Спасибо за предложение, но та же проблема / ошибка. Также может вызвать ту же ошибку при запуске
php artisan view:cache
на моем сервере. Но если я выполню ту же команду на своем Mac, она завершится успешно.3. проверьте, присутствует ли это в вашем ubuntu
views/layouts/app.blade.php
?4. @KamleshPaul Да, он присутствует.
5. в той же папке
/home/forge/default/releases/20201204084441
?
Ответ №1:
У меня была та же проблема. Благодаря вашему вопросу я смог узнать, как его решить: D
В моем случае я создал компонент внутри другой папки для лучшей организации:
$ php artisan make:component Tutorial/channelName/Alert
Таким образом, он создал компонент представления внутри следующего каталога:
views/components/tutorial/channel-name/alert.blade.php
Теперь, чтобы вызвать ваш компонент, вы делаете это следующим образом:
<x-tutorial.channelName.alert />
Это в значительной степени так.
Ответ №2:
Я столкнулся с той же проблемой, и я исправил ее, перепроверив имя моей папки.
Обратите внимание, что имя папки должно быть components
, а не component
.
Обратитесь к скриншоту для лучшей идеи.
Пример:
В случае, если вы следуете соглашению, еще одна вещь заключается в том, что если у вас есть файл в
views/components/admin/side-menu/side.blade.php
Вы можете вызвать свой компонент как:
<x-admin.side-menu.side></x-admin.side-menu.side>
Объяснено:
Синтаксис, x-
используемый в блейде, в основном сообщает, что вы выбираете папку или файл из Components
папки.
.
(Точка) используется для каждого каталога, который вы копаете в файл блейда, который хотите использовать.
Комментарии:
1. Мне потребовалось слишком много времени, чтобы понять, что я назвал его component вместо components, спасибо 🙂
Ответ №3:
Ну, у меня была такая же проблема, но я понял, что ошибка заключалась в имени класса компонента. Я не использовал имя класса с заглавной буквы, и когда я использовал имя класса с заглавной буквы, я перестал получать эту ошибку, и мой проект работал хорошо.
Пожалуйста, попробуйте использовать заглавную букву имени класса, которое соответствует компоненту в сообщении об ошибке.
Ответ №4:
В моем случае я не предоставил пространство имен в компоненте, это решилось после предоставления пространства имен.
Ответ №5:
когда я был новичком, я получил ту же ошибку, но в моем случае все в порядке, но есть небольшая синтаксическая ошибка <x- card />
, между карточкой и тире есть пробел, который неверен, поэтому между тире и картой не должно быть пробела <x-card />
, поэтому попробуйте один раз, возможно, это ваша проблема.
Ответ №6:
У меня была та же проблема — решение состояло в том, чтобы изменить: <x-forms.inputradio>
to: <x-forms.inputRadio>
просто размер буквы..
Ответ №7:
Проблема, связанная с упомянутой проблемой, чувствительна к регистру,
для локального похоже, что по причинам, не зависящим от регистра, он работает для локального perfect, но прерывается при подаче.
если у вас есть создать новый компонент внутри любой новой папки, то есть
$ php artisan make:component Widgets/CustomAlert
он создаст два файла, class и blade-файл для компонента.
файл класса
appViewsComponents\CustomAlert.php
блейд-файл
resourcesviewscomponentswidgets.custom-alert.blade.php
вы можете отобразить компонент либо с помощью класса, либо с помощью блейд-файла.
для класса убедитесь, что папка, имя класса чувствительны к регистру
ie.
<x-Widgets.CustomAlert />
для отображения блейд-файла он должен быть
<x-widgets.custom-alert />
Примечание
если вы вручную переместили файл, убедитесь, что ваше пространство имен в файле класса, имя файла и синтаксис вызова компонента должны совпадать (с учетом регистра)
примеры приведены только для справки попробуйте сравнить синтаксис и имена с вашими файлами, папками.
Надеюсь, это поможет 🙂
Ответ №8:
Это происходит на сервере. старайтесь не создавать компоненты внутри папки.. у меня была такая же проблема на сервере, но я не получил никакого решения, единственное решение — сохранить ваши компоненты вне любой подпапки