以不同的方式在URL中发送params?

时间:2012-03-10 11:28:46

标签: php zend-framework module routing

我不知道如何为这个问题写标题。无论如何这是场景..

我有一张这样的表

id | username | firstname | lastname
 1 |    ab    |     Aaaa  |    Bbbb
 2 |    yz    |     Yyyy  |    Zzzz

我使用以下网址来显示个人资料:

example.com/person/profile/index?id=1   // Show person 1 profile
example.com/person/profile/index?id=1   // Show person 2 profile

此处: person是模块,profile是控制器,index是用于获取和显示的操作使用参数id

的用户个人资料

以上情况正常运作。

问题:

现在,我想使用以下网址来使用用户名获取用户个人资料

example.com/person/profile/ab   // Show person 1 profile
example.com/person/profile/yz   // Show person 2 profile

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

如果您希望使用默认的ZF路线,只需更改example.com/person/profile/name/ab的链接,然后通过$this->getRequest()->getParam('name')

从您的控制器访问名称

您也可以制作特定路线,您可以在此处找到文档:http://framework.zend.com/manual/en/zend.controller.router.html

此外,您可以使用资源配置自定义路径,例如

resources.router.routes.profile.route = "/person/profile/:name"
resources.router.routes.profile.defaults.controller = "person"
resources.router.routes.profile.defaults.action = "profile"
resources.router.routes.profile.reqs[] = "name"

答案 1 :(得分:1)

默认情况下,您无需执行任何操作。只需将/name/THENAME添加到网址的最后一个。

然后,

  1. 获取名称的值

    $name = $this -> _request -> getParam('name');
    
  2. 使用该值从数据库中提取id

  3. 并根据需要使用