ThinkPHP实战
上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”。