#php #html #laravel-8 #laravel-livewire
Вопрос:
Я создаю сайт электронной коммерции lin Laravel8 с помощью Livewire. Когда я создаю компонент(подробный компонент) и просматриваю файл(details-component.blade.php) и добавьте маршруты, которые он говорит
DetailsComponent
не найден: Класс контроллераDetailsComponent
для одного из ваших маршрутов не найден. Вы уверены, что этот контроллер существует и правильно импортирован?
Это тот маршрут, которым я воспользовался.
Route::get('/product/{slug}', DetailsComponent ::class)->name('product.details');
Это компонент деталей
<?PHP
namespace AppHttpLivewire;
use LivewireComponent;
class DetailsComponent extends Component
{
public $slug;
public function mount($slug)
{
$this-> slug = $slug;
}
public function render()
{
$product = Product:: where('slug', $this->slug)->first();
return view('livewire.details-component',['product'=> $product])->layout("layouts.base") ;
}
}
В этом и заключается ошибка
C:xampphtdocslaravel8ecommerce>php artisan serve
UnexpectedValueException
Invalid route action: [DetailsComponent].
at
C:xampphtdocslaravel8ecommercevendorlaravelframeworksrcIlluminateRoutingRouteAction.php:92
88▕ */
89▕ protected static function makeInvokable($action)
90▕ {
91▕ if (! method_exists($action, '__invoke')) {
➜ 92▕ throw new UnexpectedValueException("Invalid route action: [{$action}].");
93▕ }
94▕
95▕ return $action.'@__invoke';
96▕ }
`DetailsComponent` was not found: Controller class `DetailsComponent` for one of your routes was not found. Are you sure this controller exists and is imported correctly?
Как я могу решить эту проблему?
Комментарии:
1. Можете ли вы показать верхнюю часть вашего файла, где вы выполняете
Route::get('/product/{slug}', DetailsComponent ::class)->name('product.details');
? (Меня интересуют только строки, которые начинаются сnamespace
и/илиuse
).2. Я думаю, что это проблема с импортом, можете ли вы обновить вопрос в верхней части вашего
web.php
файла И находится ли компонент в другом подкаталоге подAppHttpLivewire
3. @Определенно, вы оба были правы. Я не поместил » использовать приложениеHttpLivewireDetailsКомпонент;» в web.php.. моя ошибка
4. @Irfan вы оба были правы. Я не поместил » использовать приложениеHttpLivewireDetailsКомпонент;» в web.php.. моя ошибка