【问题标题】:Laravel request return to POST routeLaravel 请求返回 POST 路由
【发布时间】:2018-08-05 23:09:12
【问题描述】:

我已将我的实体替换为 Blog 以便更好地解释。

我有以下路线:

Route::get('/blog-category', 'BlogController@showBlogCategory')

它显示了一个表单,其中包含不同博客类别的下拉列表以及与该类别相关的一些其他输入字段

POSTs 格式如下:

Route::post('/blog-details', 'BlogController@showBlogDetails')

在这里我验证表单的请求,如果博客类别无效或丢失,则返回

这个方法被称为showBlogDetails,因为类别和其他字段被传递到下一个视图return view('blog-details', compact('blogCategoryData'))

在此视图中,有一个表格可以填写博客的其余详细信息。

blogCategoryData(每个数据都有一个隐藏的输入字段)和博客详细信息都POSTed 到以下路线:

Route::post('/blog-store', 'BlogController@store')

这也使用Request 进行验证,但如果失败,它会尝试返回,但它不能这样做,因为只有POST 被允许到达那里。

我需要博客类别字段才能显示博客详细信息,如果没有任何内容,则无法创建 Blog,因此我也无法临时创建。

选择/填写博客类别字段然后输入详细信息的流程是一项要求,因此必须在 2 个不同的页面中按此顺序完成。

所以目前是: GET -> POST (validate) -> POST (validate)

解决此问题的最佳方法是什么,或者如何使当前的流程正常工作?

【问题讨论】:

  • 为什么不将添加类别移动到单独的页面,然后在博客创建页面中您只需要选择已经在类别创建页面中检查和验证的类别
  • @ashokpoudel 你的意思是把所有东西都移到一页吗?
  • 不,我的意思是。创建一个页面,您可以在其中创建类别,并在第二个页面中创建帖子创建一个下拉列表,您可以在其中选择类别并填写博客帖子的其他字段
  • @ashokpoudel 我可以做到,但我认为这将是一张额外的桌子,因为它本身并不是真正的东西,它总是属于一个 Blog 所以它应该真的在Blog 表中
  • 没有一个类别可以有很多帖子。让我们考虑一个例子,其中旅游是类别。然后你可以有很多与旅游相关的帖子。所以你为类别创建了一个不同的表,并将类别的外键放在博客表中

标签: php laravel laravel-validation laravel-request


【解决方案1】:

一种方法是使用 javascript,当然还有 ajax 来获取博客数据并显示相应的部分。首先页面只显示类别下拉框。在将其更改为正确的类别页面后,会发出 ajax 请求并获取数据。然后将其替换为隐藏的“div”并显示它。

另一种方法是带替换上一页的类别框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2019-06-27
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多