重定向到嵌套控制器动作

时间:2019-11-27 09:40:56

标签: laravel-6

我最近将控制器移到了Admin目录。

  • 我更改了命名空间:namespace App\Http\Controllers\Admin;
  • 我加入了Controller类:use App\Http\Controllers\Controller;

在我的控制器中,我重定向到控制器的index()操作。

return redirect()->action('ServiceController@index');

现在出现以下错误:

  

InvalidArgumentException操作   未定义App \ Http \ Controllers \ ServiceController @ index。

我不知道如何在文档中声明新的操作重定向,因此我将问题发布在这里。

路线

Route::group(['namespace' => 'Admin', 'prefix' => 'admin'], function () {
    Route::resource('projects', 'ProjectController');
    Route::resource('services', 'ServiceController');
    Route::resource('projectFiles', 'ProjectFileController');
    Route::get('seed', 'SeedController@seedDatabase')->name('seed');
});

这是我正在谈论的控制器部分:

class ServiceController extends Controller
{
    public function index()
    {
        return view('admin.services.index', [
            'services' => Service::all()
        ]);
    }

    public function create()
    {
        return view('admin.services.create');
    }

    public function store(Request $request)
    {
        try {
            Service::create([
                'name' => $request->name,
                'machine_name' => snake_case($request->name),
                'description' => $request->description
            ]);

            return redirect()->action('\App\Htpp\Controllers\Admin\ServiceController@index');
        } catch (\Throwable $th) {
            throw $th;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我想我找到了答案,但是如果我错了,任何人都可以纠正我。

RouteServiceProvider中,命名空间设置为App\Http\Controllers

protected $namespace = 'App\Http\Controllers';

所以我决定在控制器名称之前添加Admin \,现在重定向有效:

return redirect()->action('Admin\ServiceController@index');