路由中“使用”的Laravel 8数组可调用语法不起作用
Posted
技术标签:
【中文标题】路由中“使用”的Laravel 8数组可调用语法不起作用【英文标题】:Laravel 8 array callable syntax for 'uses' in route not working 【发布时间】:2021-01-07 17:17:52 【问题描述】:Route::post('/update-client',
array(
'uses' => 'Client\API\ClientAPIController@Update',
'as' => 'apiUpdateClient',
)
);
Route::post('/delete-client',
array(
'uses' => 'Client\API\ClientAPIController@Delete',
'as' => 'apiDeleteClient',
)
);
但是,这些路由现在在 Laravel 8 中不起作用。以下是错误详细信息
目标类 [Client\API\ClientAPIController] 不存在。
如果我像下面这样写并修复它,它会起作用
Route::post('/update-client',
array(
'uses' => 'App\Http\Controller\Client\API\ClientAPIController@Update',
'as' => 'apiUpdateClient',
)
);
问题-
我的路由文件包含许多客户端路由。所以,我没有在每条路由中附加 App\Http\Controller,而是想像下面那样做,
use App\Http\Controllers\Client\API\ClientAPIController;
Route::post('/update-client',
array(
'uses' => [ClientAPIController::class, 'Update'],
'as' => 'apiUpdateClient',
)
);
上面的代码给了我错误,,,
ReflectionFunction::__construct() 期望参数 1 是字符串, 给定数组
我是否使用错误的语法来使用 uses 参数?
【问题讨论】:
我看了视频。但他们没有告诉任何关于用途和作为参数的信息。你能推荐吗? @lagbox:问题现在更清楚了。 你能提供更多当前错误的堆栈跟踪吗 @lagbox:请检查我的路线。它们在 Laravel 7 中运行良好,但在 Laravel 8 中根本无法运行。我通过更改上述代码来修复它。现在,您能否建议,如何在不使用uses
参数中的字符串语法的情况下初始化类?
我明白你在说什么,这不是在注册路线时,而是在实际调度到该路线时出现错误......我会进一步研究,可能需要注册laravel 的一个问题
【参考方案1】:
你有使用新方法:
Route::post(
'/update-client',
[ClientAPIController::class, 'update']
)->name('apiUpdateClient');
Route::post(
'/delete-client',
[ClientAPIController::class, 'delete']
)->name('apiDeleteClient');
更多信息:https://laravel.com/docs/8.x/routing#named-routes
【讨论】:
【参考方案2】:只需删除 laravel 文档中所述的用途即可。
use App\Http\Controllers\Client\API\ClientAPIController;
Route::get('/users', [ClientAPIController::class, 'Update']);
参考本文档 https://laravel.com/docs/8.x/upgrade
突然间他们改变了我们编写 laravel 路由的方式
【讨论】:
我的路线包含uses
和as
。你想让我把这两个都删掉吗?
是的,但是如果你想保留它们,你需要手动更新你的 RouteServiceProviders。请观看此视频。 youtube.com/watch?v=MfE1tnMG6fE&t=239s 8:45 提到
正如我在我的问题中提到的,没有提到任何关于用法的内容。我已经看过视频了以上是关于路由中“使用”的Laravel 8数组可调用语法不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 XAMPP apache 服务器 Laravel 8 时调用路由时出错