我正在使用Laravel 8,在编写 __invoke
控制器路由时如下:
use App\Http\Controllers\PortfolioController;
Route::get('/portfolio', 'PortfolioController')->name('portfolio');
它显示以下错误:
无效的路由操作:[PortfolioController]。
PortfolioController
不可调用
所以只有这样才能正常工作:
Route::get('/portfolio', [PortfolioController::class, '__invoke'])->name('portfolio');;
这对我来说没有意义,因为它应该找到
PortfolioController.php
中唯一的 __invoke
函数:namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PortfolioController extends Controller
{
/**
* Handle the incoming request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request)
{
$portfolio = [
['title' => 'Project #1'],
['title' => 'Project #2'],
['title' => 'Project #3'],
['title' => 'Project #4'],
];
return view('portfolio',compact('portfolio'));
}
}
拉拉维尔8是否忽略
__invoke
属性?
$router->group([ 'namespace' => '\App\Http\Controllers'], function ($router) { $router->get('portfolio', [ 'as' => 'portfolio', 'uses' => 'PortfolioController::class', ]); });
- svikramjeet