重定向至laravel控制器操作-操作未定义

ajsxfq5m  于 2023-11-20  发布在  其他
关注(0)|答案(3)|浏览(118)

我试图将页面从Laravel 5.3中的一个控制器重定向到另一个控制器中的操作。返回的错误是:

InvalidArgumentException in UrlGenerator.php line 605:
Action App\Http\Controllers\StartChoosingController@index not defined.

字符串
我的代码如下:
HomeController.php:

StartingController.php:

当我在互联网上寻找答案时,我发现我的问题可能是因为没有使用正确的namespacing
https://stackoverflow.com/questions/29822302/laravel-action-not-defined
请告诉我如何以及如何添加到我的代码的usenamespace部分来解决这个问题?非常感谢你提前。

cpjpxq1n

cpjpxq1n1#

如果你正在使用Route::resource()作为控制器路由,尝试将index()方法更改为showAll()并添加参数:

public function showAll($userTableData)

字符串
并使用它:

redirect()->action('StartChoosingController@showAll', ['userTableData' => $user_table_data]);


此外,您还需要定义新的路由:

Route::get('show-all/{userTableData}', 'StartChoosingController@showAll')


如果userTableData不是一个字符串,而是一个对象,你应该用post方法和隐藏输入来传递数据。

xuo3flqw

xuo3flqw2#

对于我的Laravel 8用户,如果你遇到同样的问题,请尝试return redirect()->action([TargetController::class, 'controller_method']);

zpf6vheq

zpf6vheq3#

如果您正在使用:

redirect()->action([App\Http\Controllers\StartChoosingController::class, 'index']);

字符串
请确保上面的App\Http\Controllers\StartingControllers::class被“分配”到一个实际的URL,这样Laravel就知道实际重定向到哪里了。
以下是完整的工作示例:* web.php *

Route::get('some', function () {
    return redirect()->action([App\Http\Controllers\StartChoosingController::class, 'index']);
});

Route::get('some/index', [App\Http\Controllers\StartChoosingController::class, 'index']);

  • app/Http/Controllers/StartingController.php *
<?php

namespace App\Http\Controllers;

class StartChoosingController extends Controller
{
    public function index()
    {
        return 'hi';
    }
}

相关问题