簡體   English   中英

Laravel 8:ReflectionException Function()不存在

[英]Laravel 8: ReflectionException Function () does not exist

我是初學者學習如何使用 Laravel 8. 當我嘗試執行我的代碼時,出現錯誤:ReflectionException Function () 不存在。

我參考了Laravel文檔#Writing Controllers,#Basic Controllers部分的語法,但是問題還是無法解決。

導致此問題的原因是什么以及如何解決?

以下代碼是我在 PurchaseController.php 中的 controller 部分:

<?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 PurchasesController extends Controller
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function index()
    {
        return view('purchases.index');
    }

    public function purchase()
    {
        //
    }

下面部分是我在web.php的路由

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PurchaseController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/


Route::get('/purchases', [PurchaseController::class], 'index');
Route::post('/purchases', [PurchaseController::class], 'purchase');

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

更新:根據下面提供的答案,我已將代碼 web.app 代碼更改為以下內容。 但是,我收到另一條錯誤消息:Illuminate\Contracts\Container\BindingResolutionException Target class [App\Http\Controllers\PurchasesController] 不存在。

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PurchasesController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/


Route::get('/purchases', [PurchasesController::class, 'index']);
Route::post('/purchases', [PurchasesController::class , 'purchase']);

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

我更新 PurchaseController.php 代碼:

<?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 PurchasesController extends Controller   //Change the naming as suggestion below
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function index()
    {
        return view('purchases.index');
    }

    public function purchase()
    {
        //
    }

你應該這樣寫你的路線:

並將 PurchaseController 更改為 PurchasesController

Route::get('/purchases', [PurchasesController::class, 'index']);
Route::post('/purchases', [PurchasesController::class, 'purchase']);

use App\Http\Controllers\PurchasesController;

=> 打開 App\Providers\RouteServiceProvider.php 並取消注釋此行 在 laravel 中嘗試此操作 8

受保護的 $namespace = 'App\Http\Controllers';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM