簡體   English   中英

Laravel 重定向()-> 操作不起作用並顯示缺少的參數

[英]Laravel redirect()->action not working and show missing parameters

PHP 版本:7.2
Laravel 版本:6.2

我正在通過 laravel 按文章做一個簡單的項目。
當我遇到 redirect()->action 時,我對此有點困惑。 我想通過 redirect()->action 傳遞一個名為 id 的變量,但它不起作用。

錯誤消息缺少 [Route: blog/post.show] [URI: blog/post/{post}] 的必需參數。

如果我刪除變量名,只傳遞變量值,它就會工作。 我閱讀了手冊,但仍然無法理解原因。 你能幫我解釋一下邏輯嗎? 謝謝你。 下面是示例代碼。

路由器.php

Route::group(['prefix' => 'blog',
              'as' => 'blog/',
              'namespace' => 'Blog'],
              function(){
                    Route::resource('/post',"PostController");
              });



后控制器.php

創建新博文(錯誤)
無法理解為什么這不起作用? 變量名($id) 是一樣的。

    public function store(Request $request)
    {
        $post = new BlogPost;
        $post->title = $title;
        $post->content = $content;
        $post->save();

        return redirect()->action(
            'Blog\PostController@show', ['id' => $post->id]
        );
    }

創建新的博客文章(正確)

    public function store(Request $request)
    {
        $post = new BlogPost;
        $post->title = $title;
        $post->content = $content;
        $post->save();

        return redirect()->action(
            'Blog\PostController@show', [$post->id]
        );
        //Or 'Blog\PostController@show', $post->id
    }

顯示新的博文

    public function show($id)
    {
        $post = BlogPost::find($id);
        if(! $post) {
            abort(404);
        }
        $content = $post->content;

        return view("blog.post", [
            "title" => $post->title,
            "content" => $content,
        ]);
    }

謝謝

這是代碼:

return redirect()->route('routename', ['id' => 1]);

您收到錯誤消息是因為您使用的是Resource Route ,它將自動將模型與路由綁定

更多信息請參考: https : //laravel.com/docs/6.x/routing#route-model-binding

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM