通过URL传递参数的方法是GET,在CodeIgnter框架中,通过URL有两种方式向控制器传递参数:
- 一种是键值对的形式。
- 一种是类似于文件路径的形式,这个时候,不是以键值对的形式了,我们只传递值。
首先,看第一种键值对的形式,这个就是最常见的,最普通的用法,比如向Hello控制器的index方法传递name="abc",age=30,那么可以向下面这样:
控制器Hello.php的代码如下:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Hello extends CI_Controller { public function index(){ print_r($_GET); } }
浏览器中访问:
http://localhost/ci/index.php/hello/index?name=abc&age=30
得到的结果如下:
Array ( [name] => abc [age] => 30 )
第二种形式,
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Hello extends CI_Controller { //为了保证未传参时,程序不会出错,最好为参数设定默认值 public function index($name='',$age=''){ echo $name."___".$age; } }
浏览器中访问:
http://localhost/ci/index.php/hello/index
只会输出___
但是访问下面这个URL:
http://localhost/ci/index.php/hello/index/abc/30
那么就会输出:abc___30
从上面的例子中可以看出,控制器中的方法接受的参数,可以是来自从调用这个方法时传递的参,还可以获取URL中的参数,只不过从URL中获取参数时,不用在URL中指定key,直接指定value即可,并且URL中控制器和方法之后的字符串会以 / 分隔,然后按顺序传递给控制器方法。