我得到的错误是:Target class [PostController] does not exist但确实如此。
web.phpRoute::get('/post', 'PostController@index');
Route::post('/post', 'PostController@store');
Route::get('/', function () {
return view('create');
});
Run Code Online (Sandbox Code Playgroud)
PostController.phpnamespace 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');
}
}
Run Code Online (Sandbox Code Playgroud)
此错误出现在 Laravel 新版本中,因为没有命名空间前缀应用于您的路由加载到的路由组。在旧版本的 Laravel 中,RouteServiceProvider包含一个$namespace属性,该属性会自动添加到控制器路由的前缀。
要解决此问题,您可以转到RouteServiceProvider并取消注释该行:
protected $namespace = 'App\\Http\\Controllers';
Run Code Online (Sandbox Code Playgroud)
或者您可以使用基于闭包的语法:
use App\Http\Controllers\PageController;
Route::get('/page', [PageController::class, 'index']);
Run Code Online (Sandbox Code Playgroud)
另一种方法是为控制器使用完全限定的类名:
Route::get('/page', 'App\Http\Controllers\PageController@index');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1651 次 |
| 最近记录: |