为什么重定向到控制器提示没有定义

1. 运行环境

1). 当前使用的 Laravel 版本?

Laravel v8.83.15

2). 当前使用的 php/php-fpm 版本?

PHP 版本:7.3.4

3). 当前系统

Windows 11

4). 业务环境

开发环境

2. 问题描述?

TaskController.php:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TaskController extends Controller
{
    public function test(){
        return  'test';
    }
}

route\web.php:

<?php
use Illuminate\Support\Facades\Route;

use App\Http\Controllers\TaskController;

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

// 报错,提示未定义。
Route::get('test', function(){
    return redirect()->action([TaskController::class,'test']);
});
// Route::get('task', [TaskController::class,'test']);
InvalidArgumentException
Action App\Http\Controllers\TaskController@test not defined.

跟着文档来的,为啥会报错?laravel.p2hp.com/cndocs/9.x/respons...

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

把那行路由注释打开就行了
Route::get('task', [TaskController::class,'test']);
报错位置,actionListApp\Http\Controllers\TaskController@test不存在
Laravel
action 是定义路由的时候添加到 actionList 中的

Laravel

打印 actionList

Route::get('/', function () {
    dd(app('router'));
});

Laravel

1年前 评论
随波逐流

重定向 action,你必须要先注册一个action

namespace App\Http\Controllers;

class TestController extends Controller
{
    public function __invoke()
    {
        return __FUNCTION__;
    }
}
use App\Http\Controllers\TestController;

Route::any('test', [TestController::class, '__invoke']);
// or Route::any('test', TestController::class);
Route::any('test2', function (Request $request) {
    return redirect()->action([TestController::class, '__invoke']);
});
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!