上QQ阅读APP看书,第一时间看更新
4.3 动作参数绑定
参数绑定通过直接绑定URL地址中的变量(不包括模块名、控制器名、动作名)为操作方法的函数形参,可以简化方法定义。动作参数绑定是默认开启的,如果需要关闭可以配置“URL_PARAMS_BIND”为“false”。
在前面的内容中,如果需要在动作中获取GET参数,需要使用$_GET数组,而使用动作参数绑定之后就不需要使用$_GET了。
编辑Application/Home/IndexController.class.php,代码如下:
<? php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function _before_index() { echo 'before'; } public function index() { echo 'index'; } public function _after_index() { echo 'after'; } public function bind($id) { echo $id; } }
新增的bind方法使用了“动作参数绑定”,此处简单输出URL变量中的id值,在浏览器访问http://localhost/thinkphp-inaction/chapter-4/home/index/bind/id/1,浏览器输出“1”。
需要注意的是,如果使用了“动作参数绑定”的动作形参未指定默认值,访问的时候URL中必须包含该变量,否则系统提示“参数错误或者未定义”。打开浏览器访问http://localhost/thinkphp-inaction/chapter-4/home/index/bind,浏览器输出“参数错误或者未定义”。
解决此问题的方法是给相应参数添加默认值,更改后的bind方法代码如下:
public function bind($id = 1) { echo $id; }
打开浏览器访问http://localhost/thinkphp-inaction/chapter-4/home/index/bind,浏览器输出“1”。