Laravel 不想重定向到正确的页面

问题描述 投票:0回答:2

目前,我正在尝试从数据库中获取所有信息,并使函数重定向到显示所有数据的列表页面。重定向当前不起作用,我收到以下错误:

Symfony\Component\HttpFoundation\RedirectResponse::__construct():参数 #2 ($status) 必须是 int 类型,给定数组。

该错误具体来自我的代码的返回重定向部分。这对于我的同学来说效果很好,他们将其链接到与我相同的blade.php页面。我是否需要添加其他任何内容,只是因为我正在重定向而不是使用视图声明类型?

我的控制器:

    public function show(): RedirectResponse
    {
        $projects = project::all();

        return redirect('list', ['projects' => $projects]);
    }

需要链接到的页面(仅供参考):

@extends('layouts.layout')

@section('content')
    <main>
        @foreach($project as $projects)
            <h2>{{ $project->title }}</h2>
            <p>{{ $project->picture_url }}</p>
            <p>{{ $project->description }}</p>
            <p>{{ $project->explanation }}</p>
            <button> Edit </button>
            <button> Delete </button>
        @endforeach
    </main>
@endsection
php laravel redirect
2个回答
0
投票

使用 return redirect()->route('routename', compact('projects'));


0
投票

要重定向到命名路由,您需要使用

Redirector
实例,您可以通过调用不带任何参数的重定向方法来获取该实例。

此实例允许您调用

route
方法,该方法将返回
RedirectResponse
到目标命名路由,如下所示:

return redirect()->route('route-name'); 

您可以在此函数的第二个参数中传递参数,因此在您的情况下,您需要这样的东西:

public function show(): RedirectResponse
{
    $projects = project::all();

    return redirect()->route('list', ['projects' => $projects]);
}

由于这种重定向响应很常见,Laravel 还提供了一个

to_route
帮助器,可以像这样使用:

public function show(): RedirectResponse
{
    $projects = project::all();

    return to_route('list', ['projects' => $projects]);
}

请参阅 laravel 文档:https://laravel.com/docs/10.x/redirects#redirecting-named-routes

© www.soinside.com 2019 - 2024. All rights reserved.