使表单URL提交看起来像路线而不是查询字符串
问题描述:
有没有一种方法来更改表单提交上的默认URL形成?使表单URL提交看起来像路线而不是查询字符串
以下是我有:
<form action="<?php echo base_url('some_controller/some_method'); ?>" method="GET">
<select name="foo">
<option value="1">bar</option>
<option value="2">Wubba lubba dub dub</option>
</select>
<button type="submit">Send</button>
</form>
当我点击该按钮,则网址:(不想)
localhost/some_controller/some_method?foo=2
有没有办法让它像下面? (预期结果)
localhost/some_controller/some_method/2
它是可以实现的,只有PHP /笨?或者也许在HTML?
(可它没有JavaScript和没有htaccess的做什么?)
我不使用form_open
方法觉得有什么差别。
答
这是因为你的方法是GET
。如果您将方法更改为POST
,则信息将从URL中消失。但是,根据您的观点,它会有不同的副作用,无论是好还是坏:
- 如果在codeigniter中打开该文件,它将置于CSRF保护的作用域中。
- 如果返回到POST提交结果的页面,您将收到“您想重新提交吗?” - 来自浏览器的消息类型。
唯一的另一种选择是通过javascript在后台执行ajax请求。
+0
我已经想到了一些替代解决方案,但我希望找到一个答案,展示如何以预期的方式完成此任务。 – FirstOne
为什么不使用POST而不是GET? –
@BrianGottier for freeeeedom。不,但严重。对于这个: – FirstOne
那么你的答案是否定的,这是不可能的。 PHP发送给浏览器后,您无法操作HTML输出。你将不得不使用JavaScript。 –