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

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...

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《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

2年前 评论
随波逐流

重定向 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']);
});
2年前 评论