首页 > 解决方案 > 创建新帖子时如何重定向到我的新帖子 | 拉拉维尔

问题描述

当我在 Laravel 中创建新帖子时,我想重定向到我的新帖子

但我得到一个 ArgumentCountError

Too few arguments to function App\Http\Controllers\ArticlesController::store(), 1 passed in C:\xampp\htdocs\forum\vendor\laravel\framework\src\Illuminate\Routing\Controller.php on line 54 and exactly 2 expected

我该如何解决?谢谢

网页.php

<?php

Route::resource('articles', ArticlesController::class);

Route::get('/', [ArticlesController::class, 'index'])->name('root');

Route::resource('articles.comments', CommentsController::class);

文章控制器.php

public function store(Request $request, $id) {
    $content = $request->validate([
        'title' => 'required|max:30',
        'content' => 'required|min:10'
    ]);
    
    //限制只有透過登入才能CREATE文章
    auth()->user()->articles()->create($content);
    return redirect('articles/'. $id)->with('notice', '文章發表成功!');
}

创建.blade.php

<form class="container-fluid" action="{{ route('articles.store') }}" method="post">

标签: phplaravelcontroller

解决方案


检查你的store()方法。我认为它应该只得到Request $request.

例子

public function store(Request $request) {
    $content = $request->validate([
        'title' => 'required|max:30',
        'content' => 'required|min:10'
    ]);
    
    //限制只有透過登入才能CREATE文章
    $article = Article::create($content); // static is not best practice, only for example

    return redirect('articles/'. $article->id)->with('notice', '文章發表成功!');
}

但是在使用 create 方法之前,您需要指定一个可填充的或受保护的。检查文档


推荐阅读