概述
首先我得检讨:因为我的懒惰以及命名的不规范,踩到这个坑。
对于特殊需求你得单独想一个独特的命名而不能乱起名字。
使用 AJAX 以 POST 方式提交参数
a : "10001"
b : "10013"
到
http://localhost/market/index.php/home/resource/searchGroup
报错非法操作 10001。很奇怪是吧。
通过翻看 ThinkPHP 的源码找到问题所在
ThinkPHP/Library/Think/Dispatcher.class.php
在这个文件里找到 getAction 方法
/**
* 获得实际的操作名称
*/
static private function getAction($var,$urlCase) {
$action
= !empty($_POST[$var]) ?
$_POST[$var] :
(!empty($_GET[$var])?$_GET[$var]:C('DEFAULT_ACTION'));
unset($_POST[$var],$_GET[$var]);
if($maps = C('URL_ACTION_MAP')) {
if(isset($maps[strtolower(CONTROLLER_NAME)])) {
$maps =
$maps[strtolower(CONTROLLER_NAME)];
if(isset($maps[strtolower($action)])) {
// 记录当前别名
define('ACTION_ALIAS',strtolower($action));
// 获取实际的操作名
if(is_array($maps[ACTION_ALIAS])){
parse_str($maps[ACTION_ALIAS][1],$vars);
$_GET
=
array_merge($_GET,$vars);
return $maps[ACTION_ALIAS][0];
}else{
return $maps[ACTION_ALIAS];
}
}elseif(array_search(strtolower($action),$maps)){
// 禁止访问原始操作
return
'';
}
}
}
return strip_tags( $urlCase? strtolower($action) : $action );
}
ThinkPHP 是通过 getAction 方法来获取你 URL 里指定的方法名的。
打印 $var 得到
a
到这就知道问题出在哪里了,ThinkPHP 是通过给这个函数
传递 a 然后在$POST['a'] 或者 $_GET['a'] 里面
获得解析出来的你访问路径的操作名。又是一个懒人。你敲个 action 不行啊。
鉴于用的是人家的框架,我让路,参数名改为 groupA,妥妥的。
转载于:https://www.cnblogs.com/peterzha/p/6853248.html
最后
以上就是大意红牛为你收集整理的ThinkPHP 解析访问路径的坑的全部内容,希望文章能够帮你解决ThinkPHP 解析访问路径的坑所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复