如何在网址中显示名称,而不是在Cakephp中显示ID?

时间:2012-08-10 21:05:43

标签: cakephp

我在cakephp环境中创建了一个应用程序, 我正在使用用户个人资料页面中的user_id显示用户个人资料

我使用锚标签将值发送到控制器,如下所示: (我不能发送名称,因为它不是唯一的。)

<a href="/users/<?php echo $result['user']['id'];?>">View Profile</a>

用户控制器中的功能:

function viewprofile($userid){
 // my logic
}

个人资料网址如下: http://www.xyz.com/users/12

我想显示用户名而不是user_id

我们如何在cakephp中的url中显示名称(带slug)

请帮帮我

3 个答案:

答案 0 :(得分:1)

echo $this->Html->link('View Profile', array(
    'controller' => 'users',
    'action'=> 'view',
    $result['user']['slug']
));

答案 1 :(得分:1)

你必须做3件事。

  1. 创建独特的用户S((您可能已经拥有;-))

  2. 使用前面提到的代码Dave创建链接

    echo $ this-&gt; Html-&gt; link('View Profile',array('controller'=&gt;'users','action'=&gt;'view',$ result ['user'] [ '蛞蝓']));

  3. 告诉你的路由器用它做什么(/app/condig/routes.php)

    Router :: connect('/ user / *',array('controller'=&gt;'users','action'=&gt;'view'));

  4. 现在你将获得漂亮的网址,slug将是一个参数,可用于在你的用户表中找到用户

答案 2 :(得分:0)

试试此代码

echo $this->Html->link('View Profile',array('plugin' => false,
                                            'controller' => 'users',
                                            'action' => 'view',
                                            "slug"=>$data['slug']));

在您的路线文件中

Router::connectNamed(array('slug'));
    Router::connect('/user/:slug', array(
        'plugin' => false,
        'controller' => 'users', 
        'action' => 'view',
        ),array(
            "pass"=>array("slug")
        )
    );