• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

laravel - Target class ... does not exist

Object Storage Arubacloud
0 głosów
339 wizyt
pytanie zadane 22 października 2021 w PHP przez uszk Użytkownik (630 p.)
edycja 22 października 2021 przez uszk

Witam mam problem z PHP'owym frameworkiem Laravel. Gdy probuje podpiac klase z Controllers do web.php z Route wyskakuje mi blad ze nie znaleziono klasy. Kod

PageController.php (w folderze Controllers)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PageController extends Controller
{
    public function show($slug){
        $pages = [
            'about' => 'aaa'
        ];
        return $pages[$slug];
    }
}

web.php ( w folderze routes)

<?php

use Illuminate\Support\Facades\Route;

Route::get('pages/{slug}', 'PageController@show');

plik Controller.php (nie ruszalem go)

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

I screenshot bledu: https://prnt.sc/1x3jg6u

Jesli to istotne programuje na macu z M1. (Laravel poprawnie sie zainstalowal z pomoca Composera).

Ps. Sprawdzilem na drugim laptopie na windowsie - tez nie dziala :'[

2 odpowiedzi

+1 głos
odpowiedź 22 października 2021 przez uszk Użytkownik (630 p.)

Ogólnie poszperałem troche głębiej i odkryłem, że w laravel w wersji 8+ usunęli prefix namespace i teraz naturalnie zwraca on null.:

"In previous releases of Laravel, the RouteServiceProvider contained a $namespace property. This property's value would automatically be prefixed onto controller route definitions and calls to the action helper / URL::action method. In Laravel 8.x, this property is null by default. This means that no automatic namespace prefixing will be done by Laravel." Laravel 8.x Docs - Release Notes

i zamiast 

Route::get('pages/{slug}', 'PageController@show');

dałem : 

Route::get('pages/{slug}', 'App\Http\Controllers\PageController@show');

i działa. 

Zostawiam post, moze komus ulatwie w przyszlosci =].

0 głosów
odpowiedź 22 października 2021 przez CubeStorm Pasjonat (15,020 p.)

Po prostu użyłeś starej metody podpinania akcji kontrolerów. Metoda której używasz została zmieniona od wersji 8.x.

Aktualnie robi się to w ten sposób:

use App\Http\Controllers\UserController;

Route::get('/user', [UserController::class, 'index']);

 

Lub dla kontrolera typu invokable:

use App\Http\Controllers\UserController;

Route::get('/user', UserController::class]);

Według twórców tej zmiany ułatwia to pracę w większości IDE poprzez możliwość kliknięcia w nazwę kontrolera co automatycznie nas do niego przenosi.

Można korzystać ze starego sposobu poprzez odkomentowanie linii z wartością $namespace w RouteServiceProvider.

Podobne pytania

–3 głosów
2 odpowiedzi 634 wizyt
pytanie zadane 27 września 2018 w PHP przez JeyJey Użytkownik (710 p.)
0 głosów
1 odpowiedź 1,608 wizyt
pytanie zadane 3 września 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)
0 głosów
0 odpowiedzi 524 wizyt
pytanie zadane 10 lipca 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...