【问题标题】:Laravel route to blogpostLaravel 路由到博文
【发布时间】:2017-01-10 13:32:18
【问题描述】:

我目前正在用 laravel 写博客。我有一个列出所有帖子标题的页面。当我点击一个标题时,它会转到完整的帖子。所以当我点击一个帖子时,它来自: localhost/posts 到 localhost/posts/{post_id}

我以前这样做的代码是:

@foreach($postsLists as $post)
<h1><a href="/posts/{{$post->id}}"> {{$post->title}}</a></h1> @endforeach

但奇怪的是,当我对特定博客文章发表评论时,我转到另一个博客时,网址已损坏。

它将 /posts/{post_id} 放在 /posts 后面。所以我得到/posts/posts/{post_id}。什么都没有。

这是我用于 cmets 的代码:

 public function store(Request $request, post $post) {
    $post->addComment(
        new Comment($request->all())
    );

    return back();
}

这是一篇博文的路径:

Route::get('posts/{post}', 'PostsController@showPost');

有人知道如何解决这个问题吗?我尝试了很多东西,但没有任何效果。

谢谢!

【问题讨论】:

    标签: php laravel controller routes


    【解决方案1】:

    为确保为链接生成正确的 URL,您可以使用 Laravel 的命名路由。在routes.php:

    Route::get('posts/{post}', 'PostsController@showPost')->name('posts.show');
    

    在模板中:

    <h1>{{ link_to_route('posts.show', $post->title, [$post->id]) }}</h1>
    

    你也可以在你的控制器中使用它来代替back():

    return redirect()->route('posts.show', [$post->id]);
    

    【讨论】:

      【解决方案2】:
       public function store(Request $request, $postId) {
          $post = Post::findOrFail($postId);
          $post->addComment(
              new Comment($request->all())
          );
      
          return back()->with('success', 'done!');
      }
      

      【讨论】:

        猜你喜欢
        • 2017-09-09
        • 2020-10-17
        • 1970-01-01
        • 2016-11-15
        • 2015-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多