我们在《Jsnpp框架的基本路由模式》这篇教程里面介绍了Jsnpp框架的基本路由规则,当然在实际使用中并不一定都是基本的路由,例如我们希望给方法传递参数,那么这时的路由又该是怎样的呢?
这一篇我就来介绍带参数的路由,带参数的路由规则如下:
http://域名/控制器/方法/参数名/参数值
我们比较一下前面学习过的基本路由,可以发现带参数的路由实际也是很简单的,就是在地址后面加上参数名和参数值。
那么如果有多个参数,又该怎样呢?
看下面这个多参数的例子:
http://域名/控制器/方法/参数名1/参数值1/参数名2/参数值2/参数名3/参数值3
我们看上面的例子就明白了,有多个参数的话,只需要依次写上“参数名/参数值”就可以了。
当我们访问这个地址的时候,参数就会自动传入方法。
那么我们的方法又是怎么来接收这些参数的呢?
我们看一个方法的示例:
namespace app\controller;
use jsnpp\Controller;
class Index extends Controller
{
public function index($param)
{
return $param['参数名'];
}
}
上面的代码是一个简单的示例代码,主要是用于说明参数怎么来接收。
我们看到“index”方法有一个参数“$param”,这个参数“$param”就是用来接收实际参数的。
我们还可以从“return $param['参数名'];”语句里面看到参数是怎么运用的。
在Jsnpp框架里面,不管有多少参数被传递进来,方法里面都只需要一个参数来接收。这个接收参数是一个数组,数组的键就是参数名,数组的值就是参数值。
例如上面的代码里面,我们用“$param”来接收参数,如果只有一个参数,那么这个参数值就是“$param['参数名']”。如果有多个参数,那么分别是这样的:“$param['参数名1']”,“$param['参数名2']”,以此类推。
例如下面这个例子:
http://域名/控制器/方法/name/mike/age/20我们在控制器方法里面就可以使用“$param['name']”和“$param['age']”分别来获取两个参数的值。