咨询:Codeigniter表单action为何自动添加.html后缀
问题分析:CodeIgniter表单Action异常的原因
看起来你遇到了控制器传递的action变量和最终渲染的表单URL不匹配的问题,我来帮你梳理几个最可能的原因:
视图里硬编码了表单Action,没使用传递的变量
这是最常见的坑! 你得去检查contact.php视图文件里的表单代码,是不是没用到你在控制器里传的$action变量,反而硬写了Booknow/add.html。比如如果视图里是这样写的:<form action="Booknow/add.html" id="registrationform" class="row" name="registrationform" method="post" accept-charset="utf-8">那不管你控制器传什么,都会用这个硬编码的路径。正确的写法应该是用CodeIgniter的
site_url()函数结合传递的变量:<form action="<?php echo site_url($action); ?>" id="registrationform" class="row" name="registrationform" method="post" accept-charset="utf-8">路由规则被修改,导致URL映射错误
打开application/config/routes.php看看有没有类似这样的路由规则:$route['contact/add'] = 'Booknow/add';或者有正则表达式路由把
contact/add的请求重定向到了Booknow/add,这会让site_url('contact/add')生成的URL变成Booknow/add。URL配置或重写规则出问题
- 检查
application/config/config.php里的$config['base_url']是不是设置正确,有没有写错域名或者路径; - 如果你用了
.htaccess来去掉URL里的index.php,看看重写规则是不是有错误,比如不小心把contact/add的请求重写到了Booknow/add。
- 检查
缓存导致的旧内容残留
有时候浏览器缓存了旧的页面,或者你开启了CodeIgniter的视图缓存,都会让你看到旧的表单代码。试试清空浏览器缓存,或者如果开了视图缓存,去application/cache/views目录下删掉对应的缓存文件。控制器/视图文件搞混了
有没有可能你修改的不是当前生效的控制器?比如你改的是Contact控制器,但实际访问的是Booknow控制器?或者contact.php视图文件有多个,你编辑的是没用的那个?
内容的提问来源于stack exchange,提问作者Gautam Koshiya
相关产品推荐
相关产品推荐

