• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
369 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 728 wizyt
pytanie zadane 27 września 2018 w PHP przez JeyJey Użytkownik (710 p.)
0 głosów
1 odpowiedź 1,807 wizyt
pytanie zadane 3 września 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)
0 głosów
0 odpowiedzi 680 wizyt
pytanie zadane 10 lipca 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)

93,156 zapytań

142,170 odpowiedzi

321,877 komentarzy

62,486 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 224p. - Marcin Putra
  2. 224p. - nidomika
  3. 223p. - dia-Chann
  4. 221p. - ssynowiec
  5. 217p. - Mikbac
  6. 216p. - CC PL
  7. 215p. - Łukasz Piwowar
  8. 212p. - zmmz89
  9. 210p. - Adrian Wieprzkowicz
  10. 208p. - rafalszastok
  11. 206p. - Michal Drewniak
  12. 204p. - Łukasz Eckert
  13. 202p. - rucin93
  14. 200p. - robwarsz
  15. 198p. - TheLukaszNs
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...