一般来说,FORM我们都是用POST方式提交的,但也有需要GET方式提交的表单.这种情况出现最多的就应该是Search了。。
如果没有采用框架,那么我们的搜索POST的action就可能是 search.php了。而如果采用框架,并且是单入口的框架,这样的Action地址往往可能是index.php?module=search&action=titlesearch之类。但如果你真的这样把这个URL放到action里面提交,你会发现,你所有的参数都扔到index.php?module=index&action=index这样的页面里去了。
这是为什么呢?其实就是因为form中,如果method是GET方式,它是不接受url后面带参数的,而是把form里的元素自己组成get参数进行传递。所以,如果需要用到get方式,请手动在表单中使用隐藏域把module和Action等赋值进去。
但凡是也有例外,单入口的PHP,如果使用pathinfo模式,好象就能 够规避这种问题,比如我的URL是index.php/module/search/action/titlesearch/这时候,框架就能够被正常接收了。原理嘛。。。。黑黑,自己想想喽。
其实我这篇勃客只是做个笔记而己,因为在做thinksns第三方开发的时候,想使用get方式做查询的时候遇到了这个问题,而thinksns的url_mode用的是兼容模式,所以就出现了这种情况。事后已经向流年提起,流年好象是说过在thinkphp的框架中想法改进一下url_mode=3,兼容模式下存在的这种问题。
或许,现在的SVN上,它已经改掉了吧?可惜我用的thinksns不能随便更新核 心,真痛苦。