【问题标题】:Laravel 5.4: post route without a form or to hide the urlLaravel 5.4:发布没有表单或隐藏 url 的路由
【发布时间】:2018-08-20 12:27:03
【问题描述】:

我在 routes/web.php 中有以下 route

Route::get('search/{model}/{lang}/{id}', ['as'=>'tag','uses'=>'SearchController@tag']);

view 我有一个带有标签的 foreach:

<li>
    <a href="{{ route('tag', ['model'=>'new', 'lang'=>$lang, $tag->id]) }}">
        {{$tag_lang->name}}
    </a>
</li>

我想要的是在浏览器中只出现“搜索”url,没有参数模型、语言和 id(domain.com/search 而不是 domain.com/search /model/lang/id),但我不想使用表单。有没有办法使用没有表单的发布路线或隐藏网址?谢谢。

【问题讨论】:

  • 简短回答:否。链接可以模仿 GET。绝不是 POST。
  • 您可以做的就是让表单看起来像一个链接。
  • 使用 post 和 ajax 按钮,不需要表单

标签: php laravel post routes


【解决方案1】:

我建议使用 POST 路由,因为这样参数将不会作为查询字符串可见。示例路线如下:

Route::post('search', ['as'=>'tag','uses'=>'SearchController@tag']);

但是,您需要将 href 转换为表单。

如果您确实需要使用 GET,那么请考虑使用散列或加密转换查询字符串以从用户那里混淆它们,然后在控制器中解码结果。

【讨论】:

  • 是的,我知道,但我不想使用表单,也不需要混淆参数,这只是 seo 的问题。还是谢谢。
【解决方案2】:

您可以让帖子看起来像一个锚:

<style type="text/css">
    form.link_mimic {display:inline}
    form.link_mimic input {display:inline;padding:0;border-width:0;margin:0;background:none;color:blue}
    form.link_mimic input:hover {text-decoration:underline}
</style>

    Click <form class="link_mimic" method="post" action="my_url">
      <input type="hidden" name="lang" value=" {{$tag->id}}">
      <input type="submit" value="{{$tag_lang->name}}">
    </form> to change the language.

试一试,也许它就是你要找的东西。

【讨论】:

  • 使用 FORM 的问题可能是我在一个页面中有 20 个标签,那么,我必须做 20 个表单还是 20 个提交?这就是为什么我认为这不是一个好主意。
  • 20 个表格?好吧,这并不难。任何小图像都会使您的页面更长,以容纳 20 个小表单,我猜这 20 个表单将使用循环以编程方式编写,所以...
  • 好吧,你说服了我,我会使用表格;)
猜你喜欢
  • 2017-12-05
  • 2015-10-30
  • 2018-05-24
  • 2017-09-20
  • 2022-01-01
  • 2017-06-29
  • 2017-12-17
  • 1970-01-01
  • 2021-04-03
相关资源
最近更新 更多