[英]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.