CakePHP路由帮助/问题

时间:2011-05-09 00:42:28

标签: php cakephp

我有一个使用CakePHP的简单用户系统,您可以查看类似/users/view/11的配置文件,其中11是ID。我想要做的是更改它,以便它使用用户名,这样你就可以得到像/users/view/cameron这样的网址。

我知道我可以在控制器中更改它,也可以在动作链接的视图中进行更改但是我想知道是否可以在路由中更改它以便它会自动更改它或者我是否还需要更改控制器等方法?

例子很棒。感谢

基于以下答案的代码:

function view ( $username = null )
{
    $this->layout = 'page';

    $this->set('users', $this->User->findByUsername($username));

    $this->set('title_for_layout', $this->User->field('firstname') . ' ' . $this->User->field('lastname'));
}

但标题不起作用?

2 个答案:

答案 0 :(得分:2)

您遗憾的是无法创建自动执行此操作的路由规则。您应该更改view()函数以接受用户名作为参数,然后按用户名执行查找。即:

function view($username = null) {
    $this->set('user', $this->User->findByUsername($username));
}

答案 1 :(得分:0)

路由不起作用,因此您必须手动编辑每个视图中的链接。或者您可以使用传递的ID来搜索用户记录。

如果设置了$ this-> User-> id,则

$ this-> User->字段功能不带参数。你可能想做这样的事情:

function view ( $username = null )
{
    $this->layout = 'page';
    $users = $this->User->findByUsername($username);
    if(sizeof($users))
    {
        $this->set('users', $users);
        $this->set('title_for_layout', $users[0]['User']['firstname'] . ' ' . $users[0]['User']['lastname']);
    }
    else
    {
        $this->Session->setFlash('Invalid username');
    }
}

希望这有帮助。