前提
基盤にしているのはこちらの記事
ついでにこれを見ながらあれこれメモした記事。
事象
記事にコメントを書けるようにしたかったのです。
というわけでCommentControllerとかいうのを追加して、postに紐付いたcommentを保存する機能を追加しました。
CommentController.php
CommentController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Comment;
use League\Flysystem\Exception;
use Illuminate\Support\Facades\Route;
class CommentController extends Controller
{
public function __construct(Request $request)
{
$this->middleware('auth');
}
public function store(Request $request)
{
$comment = new Comment();
$comment->comment = $request->comment;
$comment->user_id = $request->user()->id;
$comment->post_id = $request->post_id;
$comment->save();
return redirect('posts/'.$comment->post_id)->with('status', __('Commented to article.'));
}
}
web.php
web.php
Route::post('posts/{post_id}/comments', 'CommentController@store');
route:listでエラー
すると、php artisan route:list
でなんかエラーになるようになりました。
$ php artisan route:list
In Router.php line 991:
Call to a member function parameter() on null
ちなみに動作自体は想定通りに動いてます。
なんでだろう。
原因
とりあえず、web.phpに追加したルーティングをコメントアウトするとエラーは出ません。
なのでこれが原因っぽいです。
対応
storeがダメなのかな?と思って名前を変えてみるも特に変化なし。
いろいろ試した結果、この機能をPostControllerに移動させたらエラーが出なくなることがわかりました。
(storeのままだとかぶるので、storeCommentとかに変更しました)
んー……なんとなくわかるようなわからないような……。
まあそもそも分けた理由自体なんとなくというかぶっちゃけ理由なんてなかったんで、どうでもいいんですけどいまいち腑に落ちない。