【问题标题】:Laravel 4. Getting ID of current postLaravel 4.获取当前帖子的ID
【发布时间】:2015-03-09 17:28:04
【问题描述】:

我正在制作 cmets 系统,但目前我遇到了无法解决的问题。我有两个数据库表,posts 和 cmets(我已经创建了关系)。我必须为独特的帖子分配 cmets。所以首先,post root 是

Route::get('/playlists/{slug}'...

我这样创建了我的评论路线:

Route::post('/playlists/{slug}'...

所以在 CommentController 中,每当验证器通过时,我都会像这样将评论详细信息保存到 cmets 表中

    $comment->content = Input::get('content'); 
    $comment->post_id = ???????
    $comment->save();

那么我如何在 laravel 4.2 中识别我在哪个帖子中写评论?在当前的帖子根目录中,我可以从帖子表中获取当前帖子的数据,但问题是它仅在视图文件中。也许有一些方法可以将数据从视图传递到控制器?你能给我这个技术的简短例子吗?谢谢!

【问题讨论】:

  • {slug} 在你的路由中是post_id吗?
  • 不,但它可能是。每个帖子记录都有独特的 slug。我尝试将 $slug 传递给我的 CommentController 函数,但没有得到任何结果。在发表评论按钮上单击 url 更改,例如:public/playlists/3JSNWz89PDXUH7Rki9K5dWagcxlGCX6P。在发表评论按钮上单击它会更改为:/playlists/%7Bslug%7D。也许我应该在其他地方寻找错误?

标签: php mysql laravel-4


【解决方案1】:

有几种方法可以解决这个问题。

  1. 通过路线。您的路线可能如下所示:

    Route::post('/posts/{post_id}/comments')
    
  2. 通过 post 请求传递。然后你可以像Input::get('post_id')一样访问它。

【讨论】:

  • 我的 cmets 和 post 内容在同一页面上。看来第二种方式适合我的需要。所以我应该在我的表单中使用 post_id 的值创建不可见的输入,还是直接从 url 读取它?对不起,如果它看起来很愚蠢,我还在学习。
  • 完全可以理解。是的,您将在“cmets”表单中有一个隐藏的输入,该输入将具有 post_id。确保您验证/验证 post_id 通过帖子发送到后端(例如,确保帖子存在,确保用户有权评论该帖子),因为您不能信任来自用户的任何输入(即它是可以伪造)。
  • 谢谢!它完美地工作。我只是想知道,如果我想从 url 读取 {slug} 变量会是什么样子?
  • $slug 变量传递给控制器​​动作函数。有关其工作原理的更多详细信息:laravel.com/docs/4.2/controllers
猜你喜欢
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
相关资源
最近更新 更多