如何在当前route下,进行form的get提交呀

比如我现在的url地址是

index.php?r=site/index

能不能在form的get提交时,get参数能自动附加在site/index&…后面

现在的一提交,会直接跑到index.php?..了,没有route。

如果把route当做表彰隐藏域再提交,则route里的’/'会被转义掉

定义一个 hidden,赋值为动作名称,比如你的执行动作是 actionABC,则这个 hidden 的值就是 ABC

能否更详细点,您指的是

<input name="r" value="site/index" type="hidden" />

这样吗??

如果是这样的话,提交后,site/index里的’/'符号会被转义掉了,虽然那样的url地址,可以正常显示,但总感觉怪怪的

是的。“/”转义掉了?这个倒没有留意。

你的问题根源还是在于没有使用UrlManager中的urlformat=>‘path’

如果设定了path format并且隐藏了index.php,那么你的链接看起来应该是这样:

http://host/site/index?get_param=xxx

这时应该在form中设定action的地址为site/index,而不是用隐藏域来实现提交给哪个action这种操作

具体path format和隐藏index.php:

-========

linux环境:nginx+php-fpm:

http://www.humandong.cn/post/2

window环境:XAMPP

http://www.humandong.cn/post/4

我做了一个比较完整的测试~

首先,补充个html的基础知识~

1、form 使用 get模式的话,actioin中, "?" 问号及以后的字符串会被去掉

因为问题1,所以导致你的form问题提交至正确的route~~

2、通过form提交表单,enctype有两种编码方式,默认是 application/x-www-form-urlencoded, 还有 multipart/form-data, 后面这种模式,相信大家都见过,就是在表单需要上传文件时,所使用的。(后面的编码模式,必须搭配type=post来使用)

因为问题2,所以 "/" 会被转为 "%2F"

但不会影响使用~~