evoself 2012-04-27 12:28:54 3113次浏览 4条回复 0 0 0

有这样一个问题,比如有个控制器user,如果我直接输入网址website/user/110,程序会自动调用user下的view动作查找id为110的那条记录,此处是问题1,为什么控制器会根据id自动调用view动作呢? 如果我需要将用户名字段username作为参数传递,如 website/user/username ,就像website/user/id 一样,如何设计控制器和动作,是否修改loadModel?此为问题2 向各位yiier请教了

  • 回复于 2012-04-27 15:07 举报

    “有个控制器user,如果我直接输入网址website/user/110,程序会自动调用user下的view动作查找id为110的那条记录” 这个应该不会吧 如果url 是 website/user/find/uid/110 它会去找userController下的find方法,在find方法里可以用GET接收uid = 10 然后根据这个条件去查找相应的数据。并在render()后的视图中显示出来

  • 回复于 2012-04-27 17:05 举报

    对于这个问题,应该很好解释,你看看config文件夹里面的main.php里边的urlManager,你应该是配置了路由功能,在这个数组里边有:

    'rules'=>array(
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
    

    我想这就很容易明白了吧,当访问“controller/id值”这样的格式的时候,系统会自动路由到controller/view,把你前面带的“id值”作为GET参数传递到controller/view方法;
    如果你要启用username的话,照样子修改就可以了

  • 回复于 2012-04-27 23:45 举报

    我查了一下确实是这样的,不过不会配置rules,另外控制器里动作怎么传递用户名参数呢,是不是要重写loadModel,能给出一些代码吗?

  • 回复于 2012-04-27 23:46 举报

    论坛的回帖系统有问题啊,总是提示出错但实际上已经发出去了

您需要登录后才可以回复。登录 | 立即注册