thinkphp 3.2.3 问题:在input传参数是最要不要用name为 a、c、m、s、addon

form以post提交表单name值为a时出错:

 
当input 不输入值 的时候是没问题的
当有值时,会报错:方法错误!!
找到\ThinkPHP\Library\Think\Dispatcher.class.php文件中的getAction方法
```php
/**
 * 获得实际的操作名称
 */
static private function getAction($var,$urlCase) {
    $action   = !empty($_POST[$var]) ?
        $_POST[$var] :  \\tp框架把post中的a对应的值当做是action使用
        (!empty($_GET[$var])?$_GET[$var]:C('DEFAULT_ACTION'));
    unset($_POST[$var],$_GET[$var]);
........
}

并且通过get的方式 也是接受不到a对应的值

//Dispatcher.class.php  222 行
// 获取操作
if(!defined('BIND_ACTION')){
    $_GET[$varAction]  =   array_shift($paths); //将a对应的值覆盖并且在getAction 中将a的值给unset掉了
}

通过对Dispatcher.class.php查读,在input传参数是最要不要用name为 a、c、m、s、addon

//Dispatcher.class.php
/**
 * URL映射到控制器
 * @access public
 * @return void
 */
static public function dispatch() {
    $varPath        =   C('VAR_PATHINFO'); 
    $varAddon       =   C('VAR_ADDON');
    $varModule      =   C('VAR_MODULE');
    $varController  =   C('VAR_CONTROLLER');
    $varAction      =   C('VAR_ACTION');
    $urlCase        =   C('URL_CASE_INSENSITIVE');
 ........
}
// ThinkPHP/Conf/convention.php
return  array(
.....
    /* 系统变量名称设置 */
    'VAR_MODULE'            =>  'm',     // 默认模块获取变量
    'VAR_ADDON'             =>  'addon',     // 默认的插件控制器命名空间变量
    'VAR_CONTROLLER'        =>  'c',    // 默认控制器获取变量
    'VAR_ACTION'            =>  'a',    // 默认操作获取变量
    'VAR_PATHINFO'          =>  's',    // 兼容模式PATHINFO获取变量例如 ?s=/module/action/id/1 后面的参数取决于URL_PATHINFO_DEPR
.......
);

你可能感兴趣的:(thinkphp 3.2.3 问题:在input传参数是最要不要用name为 a、c、m、s、addon)