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 的路由的主要内容,如果未能解决你的问题,请参考以下文章