ThinkPHP5.0之控制器中常用操作
1、获取参数
方法一:在thinkphp5的控制器方法中,如果需要获取view层传来的参数,可以使用助手函数input;
1 //获取post方法传过来的参数 2 $id = input('post.id'); 3 4 //获取get方法传过来的参数 5 $id = input('id');
【指点迷津】为什么获取get参数时不是--input('get.id')呢?其实在官方文档中获取get参数可以使用$id = input('get.id')来获取的,但是在实际使用的时候会报错,所以在获取get参数时就不加get,而是直接写参数明就行了;
方法二:可以参照tp3,将内部函数M、D、U、S、C、I、F拷贝到thinkphp框架根目录下的thinkphp助手函数库helper.php中
1 if (!function_exists('M')) { 2 /** 3 * 采有TP5最新助手函数特性实现函数简写方式 M 4 * @param string $name 表名 5 * @return DB对象 6 */ 7 function M($name = '') 8 { 9 if(!empty($name)) 10 { 11 return Db::name($name); 12 } 13 } 14 } 15 16 if (!function_exists('D')) { 17 /** 18 * 采有TP5最新助手函数特性实现函数简写方式 D 19 * @param string $name 表名 20 * @return DB对象 21 */ 22 function D($name = '') 23 { 24 $name = Loader::parseName($name, 1); // 转换驼峰式命名 25 if(is_file(APP_PATH."/".MODULE_NAME."/model/$name.php")){ 26 $class = '\app\\'.MODULE_NAME.'\model\\'.$name; 27 }elseif(is_file(APP_PATH."/home/model/$name.php")){ 28 $class = '\app\home\model\\'.$name; 29 }elseif(is_file(APP_PATH."/mobile/model/$name.php")){ 30 $class = '\app\mobile\model\\'.$name; 31 }elseif(is_file(APP_PATH."/api/model/$name.php")){ 32 $class = '\app\api\model\\'.$name; 33 }elseif(is_file(APP_PATH."/admin/model/$name.php")){ 34 $class = '\app\admin\model\\'.$name; 35 }elseif(is_file(APP_PATH."/seller/model/$name.php")){ 36 $class = '\app\seller\model\\'.$name; 37 } 38 if($class) 39 { 40 return new $class(); 41 } 42 elseif(!empty($name)) 43 { 44 return Db::name($name); 45 } 46 } 47 } 48 49 50 51 /** 52 * 采有TP5最新助手函数特性实现函数简写方式 M 53 * URL组装 支持不同URL模式 54 * @param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...' 55 * @param string|array $vars 传入的参数,支持数组和字符串 56 * @param string|boolean $suffix 伪静态后缀,默认为true表示获取配置值 57 * @param boolean $domain 是否显示域名 58 * @return string 59 */ 60 if (!function_exists('U')) { 61 function U($url='',$vars='',$suffix=true,$domain=false){ 62 return Url::build($url, $vars, $suffix, $domain); 63 } 64 } 65 66 67 68 /** 69 * 采有TP5最新助手函数特性实现函数简写方式 S 70 * @param mixed $name 缓存名称,如果为数组表示进行缓存设置 71 * @param mixed $value 缓存值 72 * @param mixed $options 缓存参数 73 * @return mixed 74 */ 75 if (!function_exists('S')) { 76 function S($name,$value='',$options=null) { 77 if(!empty($value)) 78 Cache::set($name,$value,$options); 79 else 80 return Cache::get($name); 81 } 82 } 83 84 85 /** 86 * 采有TP5最新助手函数特性实现函数简写方式 S 87 * 获取和设置配置参数 支持批量定义 88 * @param string|array $name 配置变量 89 * @param mixed $value 配置值 90 * @param mixed $default 默认值 91 * @return mixed 92 */ 93 if (!function_exists('C')) { 94 function C($name=null, $value=null,$default=null) { 95 return config($name); 96 } 97 } 98 99 100 /** 101 * 采有TP5最新助手函数特性实现函数简写方式 I 102 * 获取输入参数 支持过滤和默认值 103 * 使用方法: 104 * <code> 105 * I('id',0); 获取id参数 自动判断get或者post 106 * I('post.name','','htmlspecialchars'); 获取$_POST['name'] 107 * I('get.'); 获取$_GET 108 * </code> 109 * @param string $name 变量的名称 支持指定类型 110 * @param mixed $default 不存在的时候默认值 111 * @param mixed $filter 参数过滤方法 112 * @param mixed $datas 要获取的额外数据源 113 * @return mixed 114 */ 115 if (!function_exists('I')) { 116 function I($name,$default='',$filter='htmlspecialchars',$datas=null) { 117 118 $value = input($name,'',$filter); 119 if($value !== null && $value !== ''){ 120 return $value; 121 } 122 if(strstr($name, '.')) 123 { 124 $name = explode('.', $name); 125 $value = input(end($name),'',$filter); 126 if($value !== null && $value !== '') 127 return $value; 128 } 129 return $default; 130 } 131 } 132 133 /** 134 * 采有TP5最新助手函数特性实现函数简写方式 F 135 * @param mixed $name 缓存名称,如果为数组表示进行缓存设置 136 * @param mixed $value 缓存值 137 * @param mixed $path 缓存参数 138 * @return mixed 139 */ 140 if (!function_exists('F')) { 141 function F($name,$value='',$path='') { 142 if(!empty($value)){ 143 Cache::set($name,$value); 144 }else{ 145 return Cache::get($name); 146 } 147 } 148 }
然后就可以在控制器中使用了,比如获取参数id
1 $id = I("get.id");
和助手函数input的使用方法是一样的