Laravel 5.4:发布没有表单或隐藏 url 的路由

Posted

技术标签:

【中文标题】Laravel 5.4:发布没有表单或隐藏 url 的路由【英文标题】:Laravel 5.4: post route without a form or to hide the 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 按钮,不需要表单 【参考方案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 个表单将使用循环以编程方式编写,所以... 好吧,你说服了我,我会使用表格;)

以上是关于Laravel 5.4:发布没有表单或隐藏 url 的路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4 从请求对象重定向获取方法

表单数据为空 - laravel 5.4

Laravel 5.4 表单请求唯一验证:如何访问 id?

Laravel 5.4 - 表单/API/视图

在 Laravel 5.4 中创建表单的最佳方法是啥?

Laravel 5.4 如何通过表单请求为用户分配角色?