2

The error I am getting is: Target class [PostController] does not exist but it does.

Route web.php

Route::get('/post', 'PostController@index');
Route::post('/post', 'PostController@store');

Route::get('/', function () {
    return view('create');
});

PostController.php

namespace App\Http\Controllers;

use App\Post;
use Redirect,Response;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index()
    {
        return view('create');
    }

    public function store(Request $request)
    {
        $data = json_encode($request);
        Post::create($data);

        return back()->withSuccess('Data successfully store in json format');
    }
}
matiaslauriti
  • 7,065
  • 4
  • 31
  • 43

2 Answers2

5

This error comes in Laravel new version because there is no namespace prefix being applied to your route groups that your routes are loaded into. In the old version of Laravel, the RouteServiceProvider contained a $namespace property which would automatically be prefixed onto the controller route.

To solve this, you either can go to RouteServiceProvider and uncomment the line:

protected $namespace = 'App\\Http\\Controllers';

Or you can use closure-based syntax:

use App\Http\Controllers\PageController;

Route::get('/page', [PageController::class, 'index']);

Another way would be to use the fully qualified class names for your Controllers:

Route::get('/page', 'App\Http\Controllers\PageController@index');
P. K. Tharindu
  • 2,565
  • 3
  • 17
  • 34
1

use this line on the top of the (web.php) maybe your problem will resolve

 use App\Http\Controllers\PostController;
Atif Mahmood
  • 390
  • 1
  • 11