thinkphp中的url参数传值问题

来源:互联网 发布:宽带有网络wifi连不上 编辑:程序博客网 时间:2024/05/22 16:01
<?phpnamespace app\index\controller;class Index{     public function index(){         return '我是index';     }     public  function hello($name='World'){         return   'Hello'.$name.'!';      }}?


当我们访问:


localhost/tp/index.php/index/index/hello

时就是访问index分组下的Index控制器下的hello方法;

此时的访问并没有传入任何参数,所以name参数值就是World。

输出结果则是: HelloWorld!

如果向name方法传入参数,则在地址栏name后面加上 ‘/参数值’

如:

localhost/tp/index.php/index/index/hello/name/Thinkphp

则输出结果为:HelloThinkphp!

若是有两个参数,如:

<?phpnamespace app\index\controller;class Index{     public function index(){         return '我是index';     }     public  function hello($name='World',$age=''){         return   'Hello'.$name.'!Your age is'.$age.'.';      }}?>



当我们访问:

localhost/tp/index.php/index/index/hello/name/Thinkphp/age/17

时,访问结果为,HelloThinkphp!Your age is 17.

如果将两参数位置变换,访问顺序为:

localhost/tp/index.php/index/index/hello/age/17/name/Thinkphp

则访问结果不做改变。

可以得出结论是方法会自动获取URL地址中的同名参数值作为方法的参数值,而且这个参数的传入顺序不受URL参数顺序的影响。

若是想明确参数顺序的话,则可以把应用配置文件中的url_param_type参数的值修改如下:
// 按照参数顺序获取'url_param_type' => 1

现在,URL的参数传值方式就变成了严格按照操作方法的变量定义顺序来传值了,也就是说我们必须使用下面的URL地址访问才能正确传入:

localhost/tp/index.php/index/index/hello/Thinkphp/17

若是使用:

localhost/tp/index.php/index/index/hello/name/Thinkphp/age/17

这种访问方式则会出现错误。

但是用:
localhost/tp/index.php/index/index/hello?name=thinkphp&city=shanghai
这种方法依旧也是可以的。

注意:

按顺序绑定参数的话,操作方法的参数只能使用URL pathinfo变量,而不能使用get或者post变量。



0 0
原创粉丝点击