尝试在Laravel中设置身份验证时,“ReflectionException函数()不存在”

isr3a4wc  于 2023-03-19  发布在  其他
关注(0)|答案(6)|浏览(103)

我在Laravel中100%地进行身份验证时遇到了一些麻烦(到目前为止,除了“home”之外,所有的视图似乎都能正常工作),我希望能从LaravelMaven那里得到一些帮助。

一些背景信息:

  • PHP版本:**2011年3月7日
  • Laravel版本:8.13.0版
  • 使用Composer构建ui支架(composer require laravel/ui
  • 已使用** Bootstrap **ui选项(php artisan ui bootstrap --auth

问题

如上所述,到目前为止,我似乎可以访问所有生成的身份验证视图(登录、注册和密码重置视图),但在使用虚拟帐户注册后,我在尝试访问“主页”视图时遇到以下错误:
反射异常
函数()不存在
堆栈跟踪指向以下文件:“供应商/laravel/框架/源代码/照明/路由/路由签名参数.php:23”:

<?php

namespace Illuminate\Routing;

use Illuminate\Support\Reflector;
use Illuminate\Support\Str;
use ReflectionFunction;
use ReflectionMethod;

class RouteSignatureParameters
{
    /**
     * Extract the route action's signature parameters.
     *
     * @param  array  $action
     * @param  string|null  $subClass
     * @return array
     */
    public static function fromAction(array $action, $subClass = null)
    {
        $parameters = is_string($action['uses'])
                        ? static::fromClassMethodString($action['uses'])
                        : (new ReflectionFunction($action['uses']))->getParameters();

        return is_null($subClass) ? $parameters : array_filter($parameters, function ($p) use ($subClass) {
            return Reflector::isParameterSubclassOf($p, $subClass);
        });
    }

    /**
     * Get the parameters for the given class / method by string.
     *
     * @param  string  $uses
     * @return array
     */
    protected static function fromClassMethodString($uses)
    {
        [$class, $method] = Str::parseCallback($uses);

        if (! method_exists($class, $method) && Reflector::isCallable($class, $method)) {
            return [];
        }

        return (new ReflectionMethod($class, $method))->getParameters();
    }
}

下面的行(第23行)突出显示为错误:
: (new ReflectionFunction($action['uses']))->getParameters();
下面是“web.php”文件中使用的路由:

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| 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('/', function () {
    return view('welcome', ['pageTitle' => 'Home']);
});

Route::get('/services', function () {
    return view('services', ['pageTitle' => 'Services']);
});

Route::get('/contact', function () {
    return view('contact', ['pageTitle' => 'Contact']);
});

Auth::routes();

Route::get('/home', ['pageTitle' => 'Client Dashboard'], [App\Http\Controllers\HomeController::class, 'index'])->name('home');

经过一番谷歌搜索,我了解到我尝试用来设置身份验证的方法已被弃用,现在建议使用JetstreamFortify,但我也发现了一些人仍然设法在他们的项目中使用这种旧方法的例子:
https://www.youtube.com/watch?v=NuGBzmHlINQ
因为这是我的第一个Laravel项目,我真的只是想坚持基本的东西,而不是过于复杂的东西,这就是为什么我选择不使用JetstreamFortify,并试图坚持这种旧的方法来设置身份验证。然而,我已经坚持了几个小时,现在还没有能够找出什么是错的,这就是为什么我'I’我现在正在寻求帮助。
乐意提供额外的细节/项目代码,如果需要的话-任何帮助,我可以得到这将是非常感谢。
顺便说一句,这也恰好是我第一次在StackOverflow上发帖,所以对我的问题的任何反馈或者对我如何改进它的建议也将非常感谢。
干杯,
亚行

kd3sttzy

kd3sttzy1#

通过删除第二个参数(因为它只需要2个参数),调整你的最后一个路径,使其包含某种类型的“操作”:

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
vhipe2zx

vhipe2zx2#

我已经更改了web.php文件。
我在使用以下路由时收到相同的错误:

路由::post('/delete/{id}',[管理控制器::类],'销毁产品');

使用此代码更改路线解决了此问题:

路由::post('/delete/{id}','应用程序\Http\控制器\管理控制器@销毁产品');

5uzkadbs

5uzkadbs3#

我在绘制简单路线时也遇到了同样的错误。

Route::get("/test", [ListPagesController::class, "index"]);

这是我在web.php文件中的代码,我通过控制器在视图中路由我的blade文件。当我后来不使用控制器就这样直接重定向到web.php时,问题解决了。

Route::get("/test", function () {return view("main");});

我不太明白为什么,但问题解决了。

ux6nzvsh

ux6nzvsh4#

您应该使用App\Http\Controllers\YourControllerName将其添加到web.php的第2行;

qybjjes1

qybjjes15#

对我来说,我改变了:

Route::get('/branch/',  [Controller::class, 'get_branch_list'])->name('branch');

收件人:

Route::get('/branch/',  'Controller@get_branch_list')->name('branch');
kqqjbcuj

kqqjbcuj6#

我遇到了同样的问题,我这里是我的web.php代码的路线是

错了

Route::post('postformdata',[PostFormDataController::class],'postData');

正确

Route::post('postformdata',[PostFormDataController::class,'postData']);

问题是,我没有将函数名“postData”写在方括号“[]”中,因为我将它们写在了方括号之外。您可以检查正确的代码,因此在编写Route时要小心。

  • 也许有人遇到了和我一样的问题,所以这将对他们有帮助 *

相关问题